| /************************************************************** |
| * |
| * 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. |
| * |
| *************************************************************/ |
| |
| |
| |
| // __________ Imports __________ |
| |
| import com.sun.star.uno.UnoRuntime; |
| import com.sun.star.lang.XComponent; |
| import com.sun.star.lang.XServiceInfo; |
| |
| import com.sun.star.awt.Point; |
| import com.sun.star.awt.Size; |
| |
| import com.sun.star.beans.PropertyValue; |
| import com.sun.star.beans.XPropertySet; |
| |
| import com.sun.star.container.XNamed; |
| |
| import com.sun.star.drawing.XShape; |
| import com.sun.star.drawing.XShapes; |
| import com.sun.star.drawing.XDrawPage; |
| |
| import com.sun.star.presentation.XPresentation; |
| import com.sun.star.presentation.XPresentationSupplier; |
| |
| |
| |
| // __________ Implementation __________ |
| |
| /** presentation demo |
| @author Sven Jacobi |
| */ |
| |
| // This demo will demonstrate how to create a presentation using the Office API |
| |
| // The first parameter describes the connection that is to use. If there is no parameter |
| // "uno:socket,host=localhost,port=2083;urp;StarOffice.ServiceManager" is used. |
| |
| |
| public class PresentationDemo |
| { |
| public static void main( String args[] ) |
| { |
| XComponent xDrawDoc = null; |
| try |
| { |
| // get the remote office context of a running office (a new office |
| // instance is started if necessary) |
| com.sun.star.uno.XComponentContext xOfficeContext = Helper.connect(); |
| |
| // suppress Presentation Autopilot when opening the document |
| // properties are the same as described for |
| // com.sun.star.document.MediaDescriptor |
| PropertyValue[] pPropValues = new PropertyValue[ 1 ]; |
| pPropValues[ 0 ] = new PropertyValue(); |
| pPropValues[ 0 ].Name = "Silent"; |
| pPropValues[ 0 ].Value = new Boolean( true ); |
| |
| xDrawDoc = Helper.createDocument( xOfficeContext, |
| "private:factory/simpress", "_blank", 0, pPropValues ); |
| |
| |
| XDrawPage xPage; |
| XShapes xShapes; |
| XPropertySet xShapePropSet; |
| |
| // create pages, so that three are available |
| while ( PageHelper.getDrawPageCount( xDrawDoc ) < 3 ) |
| PageHelper.insertNewDrawPageByIndex( xDrawDoc, 0 ); |
| |
| |
| // set the slide transition for the first page |
| xPage = PageHelper.getDrawPageByIndex( xDrawDoc, 0 ); |
| xShapes = (XShapes) |
| UnoRuntime.queryInterface( XShapes.class, xPage ); |
| // set slide transition effect |
| setSlideTransition( xPage, |
| com.sun.star.presentation.FadeEffect.FADE_FROM_RIGHT, |
| com.sun.star.presentation.AnimationSpeed.FAST, |
| 1, 0 ); // automatic object and slide transition |
| |
| // create a rectangle that is placed on the top left of the page |
| xShapePropSet = ShapeHelper.createAndInsertShape( xDrawDoc, |
| xShapes,new Point( 1000, 1000 ), new Size( 5000, 5000 ), |
| "com.sun.star.drawing.RectangleShape" ); |
| xShapePropSet.setPropertyValue("Effect", |
| com.sun.star.presentation.AnimationEffect.WAVYLINE_FROM_BOTTOM ); |
| |
| /* the following three properties provokes that the shape is dimmed |
| to red |
| after the animation has been finished */ |
| xShapePropSet.setPropertyValue( "DimHide", new Boolean( false ) ); |
| xShapePropSet.setPropertyValue( "DimPrevious", new Boolean( true ) ); |
| xShapePropSet.setPropertyValue( "DimColor", new Integer( 0xff0000 ) ); |
| |
| |
| // set the slide transition for the second page |
| xPage = PageHelper.getDrawPageByIndex( xDrawDoc, 1 ); |
| xShapes = (XShapes) |
| UnoRuntime.queryInterface( XShapes.class, xPage ); |
| setSlideTransition( xPage, |
| com.sun.star.presentation.FadeEffect.FADE_FROM_RIGHT, |
| com.sun.star.presentation.AnimationSpeed.SLOW, |
| 1, 0 ); // automatic object and slide transition |
| |
| // create an ellipse that is placed on the bottom right of second page |
| xShapePropSet = ShapeHelper.createAndInsertShape( xDrawDoc, |
| xShapes, new Point( 21000, 15000 ), new Size( 5000, 5000 ), |
| "com.sun.star.drawing.EllipseShape" ); |
| xShapePropSet.setPropertyValue( |
| "Effect", com.sun.star.presentation.AnimationEffect.HIDE ); |
| |
| |
| // create two objects for the third page |
| // clicking the first object lets the presentation jump |
| // to page one by using ClickAction.FIRSTPAGE, |
| // the second object lets the presentation jump to page two |
| // by using a ClickAction.BOOKMARK; |
| xPage = PageHelper.getDrawPageByIndex( xDrawDoc, 2 ); |
| xShapes = (XShapes) |
| UnoRuntime.queryInterface( XShapes.class, xPage ); |
| setSlideTransition( xPage, |
| com.sun.star.presentation.FadeEffect.ROLL_FROM_LEFT, |
| com.sun.star.presentation.AnimationSpeed.MEDIUM, |
| 2, 0 ); |
| XShape xShape = ShapeHelper.createShape( xDrawDoc, |
| new Point( 1000, 8000 ), new Size( 5000, 5000 ), |
| "com.sun.star.drawing.EllipseShape" ); |
| xShapes.add( xShape ); |
| ShapeHelper.addPortion( xShape, "click to go", false ); |
| ShapeHelper.addPortion( xShape, "to first page", true ); |
| xShapePropSet = (XPropertySet) |
| UnoRuntime.queryInterface( XPropertySet.class, xShape ); |
| xShapePropSet.setPropertyValue("Effect", |
| com.sun.star.presentation.AnimationEffect.FADE_FROM_BOTTOM ); |
| xShapePropSet.setPropertyValue( |
| "OnClick", com.sun.star.presentation.ClickAction.FIRSTPAGE ); |
| |
| |
| xShape = ShapeHelper.createShape( xDrawDoc, |
| new Point( 22000, 8000 ), new Size( 5000, 5000 ), |
| "com.sun.star.drawing.RectangleShape" ); |
| xShapes.add( xShape ); |
| ShapeHelper.addPortion( xShape, "click to go", false ); |
| ShapeHelper.addPortion( xShape, "to the second page", true ); |
| xShapePropSet = (XPropertySet) |
| UnoRuntime.queryInterface( XPropertySet.class, xShape ); |
| xShapePropSet.setPropertyValue("Effect", |
| com.sun.star.presentation.AnimationEffect.FADE_FROM_BOTTOM ); |
| |
| xShapePropSet.setPropertyValue( |
| "OnClick", com.sun.star.presentation.ClickAction.BOOKMARK ); |
| // set the name of page two, and use it with the bookmark action |
| XNamed xPageName = (XNamed)UnoRuntime.queryInterface( |
| XNamed.class, PageHelper.getDrawPageByIndex( xDrawDoc, 1 ) ); |
| xPageName.setName( "page two" ); |
| xShapePropSet.setPropertyValue( |
| "Bookmark", xPageName.getName() ); |
| |
| |
| /* start an endless presentation which is displayed in |
| full-screen mode and placed on top */ |
| |
| XPresentationSupplier xPresSupplier = (XPresentationSupplier) |
| UnoRuntime.queryInterface( XPresentationSupplier.class, xDrawDoc ); |
| XPresentation xPresentation = xPresSupplier.getPresentation(); |
| XPropertySet xPresPropSet = (XPropertySet) |
| UnoRuntime.queryInterface( XPropertySet.class, xPresentation ); |
| xPresPropSet.setPropertyValue( "IsEndless", new Boolean( true ) ); |
| xPresPropSet.setPropertyValue( "IsAlwaysOnTop", new Boolean( true ) ); |
| xPresPropSet.setPropertyValue( "Pause", new Integer( 0 ) ); |
| xPresentation.start(); |
| } |
| catch( Exception ex ) |
| { |
| System.out.println( ex ); |
| } |
| System.exit( 0 ); |
| } |
| |
| // this simple method applies the slide transition to a page |
| public static void setSlideTransition( XDrawPage xPage, |
| com.sun.star.presentation.FadeEffect eEffect, |
| com.sun.star.presentation.AnimationSpeed eSpeed, |
| int nChange, |
| int nDuration ) |
| { |
| // the following test is only sensible if you do not exactly know |
| // what type of page xPage is, for this purpose it can been tested |
| // if the com.sun.star.presentation.DrawPage service is supported |
| XServiceInfo xInfo = (XServiceInfo)UnoRuntime.queryInterface( |
| XServiceInfo.class, xPage ); |
| if ( xInfo.supportsService( "com.sun.star.presentation.DrawPage" ) == true ) |
| { |
| try |
| { |
| XPropertySet xPropSet = (XPropertySet) |
| UnoRuntime.queryInterface( XPropertySet.class, xPage ); |
| xPropSet.setPropertyValue( "Effect", eEffect ); |
| xPropSet.setPropertyValue( "Speed", eSpeed ); |
| xPropSet.setPropertyValue( "Change", new Integer( nChange ) ); |
| xPropSet.setPropertyValue( "Duration", new Integer( nDuration ) ); |
| } |
| catch( Exception ex ) |
| { |
| } |
| } |
| } |
| } |