xref: /AOO41X/main/odk/examples/DevelopersGuide/Drawing/PresentationDemo.java (revision 34dd1e2512dbacb6a9a7e4c7f17b9296daa8eff3)
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 {
main( String args[] )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
setSlideTransition( XDrawPage xPage, com.sun.star.presentation.FadeEffect eEffect, com.sun.star.presentation.AnimationSpeed eSpeed, int nChange, int nDuration )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