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