xref: /trunk/main/odk/examples/DevelopersGuide/Drawing/PresentationDemo.java (revision 3309286857f19787ae62bd793a98b5af4edd2ad3)
1*34dd1e25SAndrew Rist /**************************************************************
2cdf0e10cSrcweir  *
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
10cdf0e10cSrcweir  *
11*34dd1e25SAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
12cdf0e10cSrcweir  *
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.
19cdf0e10cSrcweir  *
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