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 23 24 // __________ Imports __________ 25 26 import com.sun.star.uno.UnoRuntime; 27 import com.sun.star.lang.XComponent; 28 import com.sun.star.lang.XServiceInfo; 29 30 import com.sun.star.awt.Point; 31 import com.sun.star.awt.Size; 32 33 import com.sun.star.beans.PropertyValue; 34 import com.sun.star.beans.XPropertySet; 35 36 import com.sun.star.container.XNamed; 37 38 import com.sun.star.drawing.XShape; 39 import com.sun.star.drawing.XShapes; 40 import com.sun.star.drawing.XDrawPage; 41 42 import com.sun.star.presentation.XPresentation; 43 import com.sun.star.presentation.XPresentationSupplier; 44 45 46 47 // __________ Implementation __________ 48 49 /** presentation demo 50 @author Sven Jacobi 51 */ 52 53 // This demo will demonstrate how to create a presentation using the Office API 54 55 // The first parameter describes the connection that is to use. If there is no parameter 56 // "uno:socket,host=localhost,port=2083;urp;StarOffice.ServiceManager" is used. 57 58 59 public class PresentationDemo 60 { 61 public static void main( String args[] ) 62 { 63 XComponent xDrawDoc = null; 64 try 65 { 66 // get the remote office context of a running office (a new office 67 // instance is started if necessary) 68 com.sun.star.uno.XComponentContext xOfficeContext = Helper.connect(); 69 70 // suppress Presentation Autopilot when opening the document 71 // properties are the same as described for 72 // com.sun.star.document.MediaDescriptor 73 PropertyValue[] pPropValues = new PropertyValue[ 1 ]; 74 pPropValues[ 0 ] = new PropertyValue(); 75 pPropValues[ 0 ].Name = "Silent"; 76 pPropValues[ 0 ].Value = new Boolean( true ); 77 78 xDrawDoc = Helper.createDocument( xOfficeContext, 79 "private:factory/simpress", "_blank", 0, pPropValues ); 80 81 82 XDrawPage xPage; 83 XShapes xShapes; 84 XPropertySet xShapePropSet; 85 86 // create pages, so that three are available 87 while ( PageHelper.getDrawPageCount( xDrawDoc ) < 3 ) 88 PageHelper.insertNewDrawPageByIndex( xDrawDoc, 0 ); 89 90 91 // set the slide transition for the first page 92 xPage = PageHelper.getDrawPageByIndex( xDrawDoc, 0 ); 93 xShapes = (XShapes) 94 UnoRuntime.queryInterface( XShapes.class, xPage ); 95 // set slide transition effect 96 setSlideTransition( xPage, 97 com.sun.star.presentation.FadeEffect.FADE_FROM_RIGHT, 98 com.sun.star.presentation.AnimationSpeed.FAST, 99 1, 0 ); // automatic object and slide transition 100 101 // create a rectangle that is placed on the top left of the page 102 xShapePropSet = ShapeHelper.createAndInsertShape( xDrawDoc, 103 xShapes,new Point( 1000, 1000 ), new Size( 5000, 5000 ), 104 "com.sun.star.drawing.RectangleShape" ); 105 xShapePropSet.setPropertyValue("Effect", 106 com.sun.star.presentation.AnimationEffect.WAVYLINE_FROM_BOTTOM ); 107 108 /* the following three properties provokes that the shape is dimmed 109 to red 110 after the animation has been finished */ 111 xShapePropSet.setPropertyValue( "DimHide", new Boolean( false ) ); 112 xShapePropSet.setPropertyValue( "DimPrevious", new Boolean( true ) ); 113 xShapePropSet.setPropertyValue( "DimColor", new Integer( 0xff0000 ) ); 114 115 116 // set the slide transition for the second page 117 xPage = PageHelper.getDrawPageByIndex( xDrawDoc, 1 ); 118 xShapes = (XShapes) 119 UnoRuntime.queryInterface( XShapes.class, xPage ); 120 setSlideTransition( xPage, 121 com.sun.star.presentation.FadeEffect.FADE_FROM_RIGHT, 122 com.sun.star.presentation.AnimationSpeed.SLOW, 123 1, 0 ); // automatic object and slide transition 124 125 // create an ellipse that is placed on the bottom right of second page 126 xShapePropSet = ShapeHelper.createAndInsertShape( xDrawDoc, 127 xShapes, new Point( 21000, 15000 ), new Size( 5000, 5000 ), 128 "com.sun.star.drawing.EllipseShape" ); 129 xShapePropSet.setPropertyValue( 130 "Effect", com.sun.star.presentation.AnimationEffect.HIDE ); 131 132 133 // create two objects for the third page 134 // clicking the first object lets the presentation jump 135 // to page one by using ClickAction.FIRSTPAGE, 136 // the second object lets the presentation jump to page two 137 // by using a ClickAction.BOOKMARK; 138 xPage = PageHelper.getDrawPageByIndex( xDrawDoc, 2 ); 139 xShapes = (XShapes) 140 UnoRuntime.queryInterface( XShapes.class, xPage ); 141 setSlideTransition( xPage, 142 com.sun.star.presentation.FadeEffect.ROLL_FROM_LEFT, 143 com.sun.star.presentation.AnimationSpeed.MEDIUM, 144 2, 0 ); 145 XShape xShape = ShapeHelper.createShape( xDrawDoc, 146 new Point( 1000, 8000 ), new Size( 5000, 5000 ), 147 "com.sun.star.drawing.EllipseShape" ); 148 xShapes.add( xShape ); 149 ShapeHelper.addPortion( xShape, "click to go", false ); 150 ShapeHelper.addPortion( xShape, "to first page", true ); 151 xShapePropSet = (XPropertySet) 152 UnoRuntime.queryInterface( XPropertySet.class, xShape ); 153 xShapePropSet.setPropertyValue("Effect", 154 com.sun.star.presentation.AnimationEffect.FADE_FROM_BOTTOM ); 155 xShapePropSet.setPropertyValue( 156 "OnClick", com.sun.star.presentation.ClickAction.FIRSTPAGE ); 157 158 159 xShape = ShapeHelper.createShape( xDrawDoc, 160 new Point( 22000, 8000 ), new Size( 5000, 5000 ), 161 "com.sun.star.drawing.RectangleShape" ); 162 xShapes.add( xShape ); 163 ShapeHelper.addPortion( xShape, "click to go", false ); 164 ShapeHelper.addPortion( xShape, "to the second page", true ); 165 xShapePropSet = (XPropertySet) 166 UnoRuntime.queryInterface( XPropertySet.class, xShape ); 167 xShapePropSet.setPropertyValue("Effect", 168 com.sun.star.presentation.AnimationEffect.FADE_FROM_BOTTOM ); 169 170 xShapePropSet.setPropertyValue( 171 "OnClick", com.sun.star.presentation.ClickAction.BOOKMARK ); 172 // set the name of page two, and use it with the bookmark action 173 XNamed xPageName = (XNamed)UnoRuntime.queryInterface( 174 XNamed.class, PageHelper.getDrawPageByIndex( xDrawDoc, 1 ) ); 175 xPageName.setName( "page two" ); 176 xShapePropSet.setPropertyValue( 177 "Bookmark", xPageName.getName() ); 178 179 180 /* start an endless presentation which is displayed in 181 full-screen mode and placed on top */ 182 183 XPresentationSupplier xPresSupplier = (XPresentationSupplier) 184 UnoRuntime.queryInterface( XPresentationSupplier.class, xDrawDoc ); 185 XPresentation xPresentation = xPresSupplier.getPresentation(); 186 XPropertySet xPresPropSet = (XPropertySet) 187 UnoRuntime.queryInterface( XPropertySet.class, xPresentation ); 188 xPresPropSet.setPropertyValue( "IsEndless", new Boolean( true ) ); 189 xPresPropSet.setPropertyValue( "IsAlwaysOnTop", new Boolean( true ) ); 190 xPresPropSet.setPropertyValue( "Pause", new Integer( 0 ) ); 191 xPresentation.start(); 192 } 193 catch( Exception ex ) 194 { 195 System.out.println( ex ); 196 } 197 System.exit( 0 ); 198 } 199 200 // this simple method applies the slide transition to a page 201 public static void setSlideTransition( XDrawPage xPage, 202 com.sun.star.presentation.FadeEffect eEffect, 203 com.sun.star.presentation.AnimationSpeed eSpeed, 204 int nChange, 205 int nDuration ) 206 { 207 // the following test is only sensible if you do not exactly know 208 // what type of page xPage is, for this purpose it can been tested 209 // if the com.sun.star.presentation.DrawPage service is supported 210 XServiceInfo xInfo = (XServiceInfo)UnoRuntime.queryInterface( 211 XServiceInfo.class, xPage ); 212 if ( xInfo.supportsService( "com.sun.star.presentation.DrawPage" ) == true ) 213 { 214 try 215 { 216 XPropertySet xPropSet = (XPropertySet) 217 UnoRuntime.queryInterface( XPropertySet.class, xPage ); 218 xPropSet.setPropertyValue( "Effect", eEffect ); 219 xPropSet.setPropertyValue( "Speed", eSpeed ); 220 xPropSet.setPropertyValue( "Change", new Integer( nChange ) ); 221 xPropSet.setPropertyValue( "Duration", new Integer( nDuration ) ); 222 } 223 catch( Exception ex ) 224 { 225 } 226 } 227 } 228 } 229