Upload
hdruzanovic
View
215
Download
0
Embed Size (px)
Citation preview
8/13/2019 WIRTSCHAFTSUNIVERSITT WIEN BAKKALAUREATSARBEIT
1/82
WIRTSCHAFTSUNIVERSITT WIENBAKKALAUREATSARBEIT
Titel der Bakkalaureatsarbeit:
Automatische Erstellung von Orientierungshilfen fr PrsentorInnen inOpenOffice.org Impress
Enlis!"er Titel der Bakkalaureatsarbeit:
Automated Creation of Guideposts & Hints for Presenters inOpenOffice.org Impress
Ver#asser: omini! Gundac!er
$atrikel%Nr&: "#$%%$
Studienri!"tun: '"(( $) *a!!alaureat +irtschaftsinformati!
Kurs: %$) ,ertiefungs!urs ,I - *a!!alaureatsareitElectronic Commerce
Te'ts(ra!"e: Englisch
Betreuerin)Betreuer: ao. /niv. Prof. r. 0on1 G. 2latscher
Ich versichere3
dass ich die *a!!alaureatsareit selststndig verfasst4 andere als die angegeenen 5uellen undHilfsmittel nicht enut6t und mich auch sonst !einer unerlauten Hilfe edient hae.
dass ich die Ausareitung 6u dem oigen 7hema isher 8eder im In9 noch im Ausland :einer*eurteilerin- einem *eurteiler 6ur *egutachtung; in irgendeiner 2orm als Prfungsareit vorgelegthae.
dass diese Areit mit der vom *etreuer eurteilten Areit ereinstimmt.
atum /nterschrift
8/13/2019 WIRTSCHAFTSUNIVERSITT WIEN BAKKALAUREATSARBEIT
2/82
Page )
Table *# C*ntents% Introduction...................................................................................................................
%.% Astract..................................................................................................................
%.) 0esearch 5uestion................................................................................................
%.( ect 0e??.................................................................................................=
).%.% Histor1............................................................................................................=
).%.) 0e??@A...........................................................................................................
).%.( Overvie8.........................................................................................................).%.# B1nta?.............................................................................................................
).) OpenOffice.org....................................................................................................%(
).).% Histor1..........................................................................................................%(
).).) Overvie8.......................................................................................................%(
).).( Architecture..................................................................................................%#
).).# Bervices & Interfaces...................................................................................%
).( *ean Bcripting 2rame8or! for 0e??....................................................................%).(.% *ean Bcripting 2rame8or!...........................................................................%
).(.) *B2#0e??....................................................................................................)"
).(.( *B2.C@B.......................................................................................................))
).(.# /DO.C@B......................................................................................................)(
).(.$ 0outines.......................................................................................................)#
).# Bummar1.............................................................................................................)$
( Installation Guide........................................................................................................)
(.% Installation 'ava...................................................................................................)
(.) Installation OpenOffice.org..................................................................................)=
(.( Installation Open O>ect 0e??.............................................................................)=
(.# Installation *B2#0e??.........................................................................................)
# Impress Automation...................................................................................................()
#.% General................................................................................................................()
#.) Introduction E?ample...........................................................................................(#
#.( E?amples.............................................................................................................#"
#.(.% E?ample"%...................................................................................................#%
8/13/2019 WIRTSCHAFTSUNIVERSITT WIEN BAKKALAUREATSARBEIT
3/82
Page (
#.(.) E?ample")...................................................................................................#$
#.(.( E?ample"(...................................................................................................#
#.(.# E?ample"#...................................................................................................$#
#.(.$ E?ample"$...................................................................................................$=
#.(. E?ample"...................................................................................................%
#.(.= E?ample"=...................................................................................................
#.(. E?ample"...................................................................................................=%
#.(. E?ample"...................................................................................................=$
$ Conclusion..................................................................................................................=
0eferences.................................................................................................................."
8/13/2019 WIRTSCHAFTSUNIVERSITT WIEN BAKKALAUREATSARBEIT
4/82
Page #
Table *# Fiures2igure %3 Communication et8een /DO components 2lat"F.....................................%$
2igure )3 /DO Component odel 2lat"$F.....................................................................%$
2igure (3 Illustration of Berviceanager OpenOf"=cF...................................................%=
2igure #3 Interfaces & ethods OpenOf"=cF.................................................................%
2igure $3 Architecture of *B2#0e?? 2lat"cF................................................................)%
2igure 3 2rom oo0e?? to Automation Aham"$F...........................................................)$
2igure =3 Options ialog in OOo.....................................................................................)
2igure 3 E?tension anager..........................................................................................("
2igure 3 acros installation...........................................................................................(%
2igure %"3 Presentation ocument odel OOoev"$F.................................................(#
2igure %%3 Organi6e acros...........................................................................................($
2igure %)3 acro editor...................................................................................................(
2igure %(3 Hello +orld 7e?tBhape ..............................................................................(
2igure %#3 Clic!Event on 7e?tBhape..............................................................................(
2igure %$3 Progress ar..................................................................................................#(
2igure %3 Pacman on his 8a1 to the cherries...............................................................#=
2igure %=3 *om 8ith fuse..............................................................................................$)
2igure %3 E?plosion slide...............................................................................................$(
2igure %3 Cloc! transition..............................................................................................$
2igure )"3 Input dialogs.................................................................................................."
2igure )%3 Generated rea! slide..................................................................................."
2igure ))3 Blide effects...................................................................................................#
2igure )(3 ialog for choosing the speed.......................................................................$
2igure )#3 uration of one slide......................................................................................$2igure )$3 5uestion dialog for end slide.........................................................................$
2igure )3 Guideposts from heading..............................................................................
2igure )=3 Guideposts 8ith oo!mar!s..........................................................................=#
2igure )3 Generated agenda.........................................................................................=
8/13/2019 WIRTSCHAFTSUNIVERSITT WIEN BAKKALAUREATSARBEIT
5/82
Page $
Table *# Sni((etsBnippet %3 Hello +orld....................................................................................................%"
Bnippet )3 ,ariales........................................................................................................%"
Bnippet (3 Control Btructures %.......................................................................................%%
Bnippet #3 Control Btructures ).......................................................................................%%
Bnippet $3 Control Btructures (.......................................................................................%)
Bnippet 3 Control Btructures #.......................................................................................%)
Bnippet =3 *B2#0e?? simple e?ample...........................................................................)(
Bnippet 3 *B2#0e?? message o? e?ample................................................................)(
Bnippet 3 /sing /DO.C@B.............................................................................................)#
Bnippet %"3 Interfaces 8ith es!top...............................................................................(
Bnippet %%3 Introduction e?ample :""introduction.re?;.................................................(
Bnippet %)3 Progressar :"%progressar.re?;..............................................................#)
Bnippet %(3 Pacman :")pacman.re?;...........................................................................#=
Bnippet %#3 *om :"(om.re?;...................................................................................$%
Bnippet %$3 Cloc! :"#cloc!.re?;....................................................................................$$
Bnippet %3 Create *rea! Blide :"$rea!.re?;..............................................................$
Bnippet %=3 ,arious tas!s :"finishpresentation.re?;.................................................(
Bnippet %3 Guideposts from headings :"=guideposts.re?;.........................................
Bnippet %3 Guideposts 8ith circles and oo!mar!s :"guidepostscircles.re?;........ =(
Bnippet )"3 Create an agenda :"agenda.re?;............................................................==
8/13/2019 WIRTSCHAFTSUNIVERSITT WIEN BAKKALAUREATSARBEIT
6/82
8/13/2019 WIRTSCHAFTSUNIVERSITT WIEN BAKKALAUREATSARBEIT
7/82
General Part Page =
, 1eneral 2art
7his chapter contains an overvie8 of all the used tools4 applications and frame8or!s4
8hich are needed for the automation of Impress and other OpenOffice.org applications.
In addition to the technical prereKuisites4 the most important terms 8ill e defined here4
to ease the access to the topic of the achelor paper.
,&+ 3(en 3b4e!t Re''
7he paper starts 8ith some introductor1 8ords aout the scripting language Open
O>ect 0e?? and ho8 it emerges from I*Ls 0EMM language. 7here 8ill also e a
section 8ith the asic s1nta? of Open O>ect 0e??4 8hich is reall1 not that hard to learn
and understand.
,&+&+ Hist*r/
Open O>ect 0e?? has its seeds in the human centric language 0EMM :Restructured
E5tended E5ecutor; implemented 1 i!e Co8lisha8 of I* et8een )" arch %=
and mid9%). 7he main purpose of the development of 0EMM 8as to replace I*Nsmainframe atch language EMEC II.
2lat"aF
Eventuall1 in % 0EMM 8as een standardi6ed 1 ADBI4 8hich pulished it under the
code ADBI M(.)=#% Information 7echnolog1 Programming @anguage 0EMMQ.
+i!i0e"=F
In the %"s4 there 8ere t8o ne8er variants of 0EMM4 8hich 8ere released3
Det0e?? this version compiles to 'ava 1te9code and ma!es use of the 'ava
o>ect model. 7herefore it is not generall1 up8ards9compatile 8ith the RclassicL
0EMM.
O>ect 0e?? the generall1 up8ards9compatile version of 0EMM4 8hich
implements the o>ect9oriented paradigm.
+i!i0e"=F
8/13/2019 WIRTSCHAFTSUNIVERSITT WIEN BAKKALAUREATSARBEIT
8/82
General Part Page
As noted aove4 O>ect 0e?? is the o>ect9oriented approach to the scripting language
0e??. One of the reKuirements of this version 8as the full compatiilit1 8ith otherinterpreters that 8ere not o>ect9oriented or other Open Bource 0e?? interpreters
currentl1 availale.
OO0e??"=F
7his 8as a reKuest of the BHA0E BIG :special interest group;.
In %= after 1ears of development4 the commercial version of O>ect 0EMM 8as
released included in OB-) +arpQ. @ater on4 I* uilt versions for +indo8s4 AIM and
e?perimental ports for @inu? and Bolaris.
2lat"aF
7he last step of 0EMM ecoming Open O>ect 0e?? 8as the decision from I* to ma!e
their product availale to the open source communit1. 7he1 choose the 0e??@A for
managing the pro>ect in )""#.
7he first release of Open O>ect 0e?? 8as announced in arch )""$.
OO0e??"=aF
,&+&, Re''LA
7he 0e?? @anguage Association :0e??@A; is an independent4 non9profit organi6ation
dedicated to promoting the use and understanding of the 0e?? programming language
0e??@A"=F
7his special interest group 8as involved in porting O>ect 0e?? to an open sourcepro>ect in )""# as mentioned aove. Ever1 1ear4 the group holds a annual meeting
called SAnnual International 0e?? B1mposium 8here the memers and other e?perts
present ne8 and interesting pro>ects.
,&+&. 36er6ie0
7his paragraph deals 8ith the main features and fundamental principles of the 0e??
language. One of the ma>or advantages of 0e?? is that it is ver1 eas1 to learn4 even8ithout advanced programming s!ills4 and that it facilitates a rapid development
8/13/2019 WIRTSCHAFTSUNIVERSITT WIEN BAKKALAUREATSARBEIT
9/82
General Part Page
process.
7he main features are the follo8ing3
Natural lanuae s/nta' +ith Open O>ect 0e?? 8riting and maintainingprograms is ver1 eas1. Intuitive instructions4 8hich are oriented to the English
language4 ma!e programming accessile to I7 or usiness users. *ecause 0e??
does not use an1 strange areviations4 it is eas1 to read a program or script
and readil1 understand its functionalit14 for e?ample. RB1stem.out.println:??Q;L in
'ava and Ba1 ??Q in 0e??.
3b4e!t *rientati*n Bupports effective componenti6ation and all the other
advantages of the o>ect9oriented paradigm.
I7(li!it data t/(in In 0e??4 there is no need to e?plicitl1 declare variales.
7hat reduces the comple?it1 of application code and ma!es programming more
intuitive and faster.
8e!i7al arit"7eti! Open O>ect 0e?? performs calculations in a more
accurate 8a1. 7he asence of rounding ma!es it eas1 to compl1 8ith legal
reKuirements for financial reporting.
Cr*ss%(lat#*r7 inter*(erabilit/ 0educes development costs and supports
s!ills transfer across platforms.
Ra(id dian*sti!s In the case of e?ceptions and errors4 Open O>ect 0e??
provides the user 8ith clear messages and a uilt9 in4 multi9level deugger.
OO0e??"=aF
,&+&9 S/nta'
In order to understand the e?amples and snippets in the follo8ing sections of this
paper4 a short introduction into the Open O>ect 0e?? language is inevitale. 7his
paper does not 8ant to rea! an1 conventions for descriing a programming language4
so the first piece of code is the infamous SHello +orld e?ample.
8/13/2019 WIRTSCHAFTSUNIVERSITT WIEN BAKKALAUREATSARBEIT
10/82
General Part Page %"
7his snippet sho8s man1 aspects of 0e??3
$ulti line !*77ents Btarting 8ith a slash and an asteris!4 a comment can
span over multiple lines. An asteris! and a slash closes the comment.
Sinle line !*77ent Btarting 8ith a doule minus sign or dash4 a comment
can e made onl1 till the end of the line.
C*77and end Dormall14 a command consists of all characters till the
semicolon. It is possile to 8rite as man1 commands as one prefers in one line.
If there is no semicolon4 the command ends at the end of the line.
Basi! !*77ands BAT prints the follo8ing string literals4 variales4 etc. to the
command shell 8here the 0e?? script 8as started.
EMI7 "4 as the name implies4 e?its the program and sends " ac! to the shell.
+hereas " generall1 means that the program finished 8ith no prolems or
errors.
2lat"F
7his snippet sho8s the follo8ing facts3
One do not need to specif1 a data t1pe or something similar. 0e?? automaticall1
detects if the value inside a variale is a string or a numeric value and handles the
Snippet 2: Variables
Snippet 1: Hello World
8/13/2019 WIRTSCHAFTSUNIVERSITT WIEN BAKKALAUREATSARBEIT
11/82
General Part Page %%
operation itself.
0e?? also treats several 8hite spaces in commands and string concatenations as one
8hitespace. 7hat is 8h1 the output of the SAYnumer % and SAYnumer ) are eKual.
7he doule9pipe in a string concatenation avoids the single 8hitespace et8een the
strings and connects the value of aand the value of bseamless together.
7he last SAYcommand adds the t8o values regardless the fact that b8as initiali6ed
8ith a string literal containing the numer #.
2lat"F
7he ne?t snippets sho8 ho8 control structures are implemented in 0e??3
7he IF ELSEimplementation of 0e?? loo!s li!e in an1 other programming language.
If one 8ants to ma!e a loc! of commands4 for e?ample to e processed in the IFor
ELSEranch4 then the DO ENDcommands are appropriate. 7here is no need for a
enclosing tag.
+ith the !e18ords DOand ENDrespectivel1 a loop is implemented in 0e??. One can
specif1 the numer of iterations after DO.
Snippet 4: Control Structures 2
Snippet 3: Control Structures 1
8/13/2019 WIRTSCHAFTSUNIVERSITT WIEN BAKKALAUREATSARBEIT
12/82
General Part Page %)
7he eKuivalent to a for loop in 'ava is the DOTOBYloop. +ith this loop one can
specif1 the start value of a control variale4 the value 8hen the loop should e e?ited
and the value that 8ould e added to the control variale after each iteration.
7he last snippet sho8s the DO-WHILEloop. In fact it is nearl1 the same li!e the DO-
TO-BY loop4 ut unli!e this version4 one has to manage the increase of the control
variale himself. 7he !e18ord WHILEcan e changed to UNTIL4 8hich alters the 8a1
ho8 the loop 8ill e e?ited.
2lat"F
Snippet 6: Control Structures 4
Snippet 5: Control Structures 3
8/13/2019 WIRTSCHAFTSUNIVERSITT WIEN BAKKALAUREATSARBEIT
13/82
General Part Page %(
,&, 3(en3##i!e&*r
7his paragraph deals 8ith the ne?t essential part of this achelor paper3 7he
OpenOffice.org office suite. 7he first part descries the historic facts of the pro>ect4 later
on the paper sho8s the main components of OpenOffice.org.
OpenOffice.org is a free suite of office applications availale under the GD/ @esser
General Pulic @icense :@GP@;. 7he soft8are pac!age includes a 8ord processor4 a
spreadsheet4 a presentation program4 a dataase program and a vector graphics
editor. 7he suite is targeted to reduce the mar!et share of icrosoftNs Office and en>o1s
increasing popularit1 amongst the communit1.+i!iOo"=F
,&,&+ Hist*r/
7he origin of OpenOffice.org is the compan1 Btarivision4 8hich 8as founded in
German1 in % 1 arco *Urries. OpenOffice.org emerged from the earlier
proprietar1 soft8are application suite BtarOffice.
+i!iOo"=F
After Bun icros1stems acKuired Btarivision in %4 the1 released BtarOffice $.)4 the
first version 8hich 8as free of charge. OpenOf"=aF
In )""" Bun released the source code under oth the @GP@ and the Bun Industr1
Btandards Bource @icense :BIBB@;. Bince the autumn of that 1ear4 the product is no8
called OpenOffice.org. Tears later Bun changed the s1stems 8ith t8o different license
t1pes and decides to continue their 8or! 8ith the usage of the @GP@.
At the time 8hen this paper 8as 8ritten4 the current version of OpenOffice.org 8as
).).% 0C% uild B0C"m% and 8as released on a1 $th4 )""=.
+i!iOo"=F
,&,&, 36er6ie0
7he OpenOffice.org office suite consists of different applications. Dearl1 all of them
have corresponding applications in icrosoftNs Office. 7his fact should ma!e it easier
for users4 to s8itch to the open source suite.
8/13/2019 WIRTSCHAFTSUNIVERSITT WIEN BAKKALAUREATSARBEIT
14/82
General Part Page %#
7he components are the follo8ing3
Writer 7he 8ord processing application4 similar to B +ord4 can e used to
create te?t documents4 from simple letters to oo!s or thesis li!e this one.
Cal! 7he spreadsheet program is the counterpart to B E?cel 8ith the asic
functionalities li!e tales4 cell and calculations ut also provides the user 8ith a
comprehensive range of advanced functions.
I7(ress 7he presentation soft8are of OpenOffice.org. @i!e Po8erPoint4
Impress can e used for creating multimedia presentations. 7his component 8ill
e heavil1 used across the paper.
Base *ase is a dataase application and can e compared 8ith B Access. In
*ase creation of tales4 reports4 Kueries and forms is possile.
8ra0 ra8 represents a vector graphics editor to create and design
ever1thing from simple diagrams to d1namic ( illustrations.
$at" A tool4 8hich can e used to create mathematical eKuations4 either 8ith
a graphical user interface :G/I; or a eKuation editor.
+i!iOo"=F OpenOf"=F
,&,&. Ar!"ite!ture
7his section 8ill cover the architecture of OpenOffice.org to act as an entr1 point for the
automation. 7he facts presented here are essential for the understanding of the
snippets and nutshells in this paper.
OpenOffice.org is ased on a client9server architecture. 7he communication et8een
the la1ers is t1picall1 supposed to run over 7CP-IP soc!ets 1 using /DO remote
protocol :urp;4 8hereas a t1pical installation of this office suite runs on a single PC
rather than on different machines 8ith each running different operating s1stems4 8hich
is possile.
8/13/2019 WIRTSCHAFTSUNIVERSITT WIEN BAKKALAUREATSARBEIT
15/82
General Part Page %$
2igure %illustrates the communication et8een /DO o>ects.
Figure 1: Communication between !" components #Flat$6%
7he o>ect model used in OpenOffice.org is called /niversal Det8or! O>ects :/DO;
and ever1 component or o>ect is defined using an interface description language
:I@;. 7hat means that each application4 for e?ample Impress4 represents a set of those
components assemled together.
2igure )tries to picture this concept4 8hereas it should e noted that s8riter or scalc
can here e replaced 1 an1 otherOpenOffice.org applications.
2lat"$F
Figure 2: !" Component &odel #Flat$5%
8/13/2019 WIRTSCHAFTSUNIVERSITT WIEN BAKKALAUREATSARBEIT
16/82
General Part Page %
,&,&9 Ser6i!es ; Inter#a!es
3b4e!ts
SIn /DO4 an o>ect is a soft8are artifact that has methods that 1ou can call andattriutes that 1ou can get and set. E?actl1 8hat methods and attriutes an o>ect
offers is specified 1 the set of interfaces it supports.
OpenOf"=cF
Inter#a!e
SAn interface specifies a set of attriutes and methods that together define one single
aspect of an o>ect
OpenOf"=cF
Each /DO component consists of interfaces and properties4 8hich provide access to
the different functionalities of the components. Properties are used for storing
information for these services.
7o retrieve a ne8 instance of a service component one has to use a Berviceanager4
8hich is an implementation of the factor1 method pattern in soft8are programming.7he methods createInstance:; or createInstanceWithArguments:; in comination
8ith the full1 Kualified name of the /DO component can e used to create the so9called
service o>ects.
8/13/2019 WIRTSCHAFTSUNIVERSITT WIEN BAKKALAUREATSARBEIT
17/82
General Part Page %=
Figure 3: 'llustration o( Ser)ice&anager #"pen"($*c%
In order to get access to methods from an interface4 one has to Kuer1 the service o>ect
for the interface itself. 7his step is mandator1 and returns an o>ect4 8hich has the
methods of the reKuested interface4 8hich can e invo!ed no8.
7his 8or! flo8 seems ver1 a8!8ard4 ut offers fe8 advantages li!e the separation and
grouping of methods that elong semanticall1 and functionall1 together.
2lat"$F
8/13/2019 WIRTSCHAFTSUNIVERSITT WIEN BAKKALAUREATSARBEIT
18/82
General Part Page %
Figure 4: 'nter(aces + &et,ods #"pen"($*c%
2igure #sho8s ho8 t8o o>ects 8ith interfaces and corresponding methods loo! li!e in
OpenOffice.org using an /@ diagram. TextDcumentcontains te?t4 is searchale and
refreshale. *ecause 7e?tocument is al8a1s an O!!iceDcument4 it implements also
the interfaces"#$i!iab%e4"#$e%4"&rintab%eand"Strab%e. All Interfaces egin 8ith
an M in OpenOffice to distinguish them from other entities.
8/13/2019 WIRTSCHAFTSUNIVERSITT WIEN BAKKALAUREATSARBEIT
19/82
8/13/2019 WIRTSCHAFTSUNIVERSITT WIEN BAKKALAUREATSARBEIT
20/82
General Part Page )"
Bome languages are also supported ecause the1 have their o8n *B2 engine3
ect;
1r**6/
ects.
BSFEnine 7hrough this interface it is possile to handle script e?ecution and
o>ect registration in a generic 8a14 ecause it provides an astract vie8 of the
scripting languageLs capailities.
*B2"=cF
,&.&, BSF9Re''
*B2#0e??4 as aove mentioned4 is an e?tension to ma!e it possile to use the
scripting language 0e?? to dive into the 8orld of 'ava. 7his means that one can access
ever1 'ava o>ect or method via 0e??. Also the reverse 8a14 using 0e?? in 'ava4 is
provided 1 *B2#0e??
*B2#0e"=cF
+ith this ridge4 0e?? can get access to the largest e?ternal function pac!age on earth4
8hich 8as additionall1 ported to each and ever1 important operating s1stem and
8/13/2019 WIRTSCHAFTSUNIVERSITT WIEN BAKKALAUREATSARBEIT
21/82
General Part Page )%
hard8are platform
2lat"cF
2rom the historical point of vie84 it 8as Prof. ag. r. 0on1 G. 2latscher 8hodeveloped *B2#0e?? in ( different steps. Each version 8as named after the cit1 8here
he 8as 8or!ing at a universit1.
7he SEssener ,ersion 8as developed in )""" in cooperation 8ith a student from Prof.
2latscher4 Peter or
changes4 eside some ugfi?es4 8as the addition of e?ternal functions from 0e?? intothe S*B2#0e??.dll pac!age.
7he current version4 the S,ienna ,ersion4 8ith the numer ). allo8s Open O>ect
0e?? programs to address 'ava fields as if the1 8ere Open O>ect 0e?? attriutes.
7here are also t8o important methods4 bx and unbx4 8hich can 8rap and un8rap
primitive data t1pes in 'ava to the corresponding classes.
2lat"cF4 *B2#0e"=cF
Figure 5: -rc,itecture o( .SF4/e00 #Flat$6c%
8/13/2019 WIRTSCHAFTSUNIVERSITT WIEN BAKKALAUREATSARBEIT
22/82
General Part Page ))
2igure $sho8s the Architecture of the S,ienna ,ersion of *B2#0e??. 7here is a cls
file4 8hich supports *B2 routines and contains services that ma!e the most important
'ava classes directl1 availale via the environment s1mol &bs#9re''.
2lat"cF
,&.&. BSF&CLS
7his section 8ill sho8 ho8 0e?? can access some 8ell !no8n 'ava classes and ho8 it
can call methods and retrieve results from them.
As mentioned aove4 8ith the help of the BSF'(LSmodule4 one can access a huge
amount of classes and functionalit14 8hich is availale in and for the 8orld of 'ava.2rom accessing the standard 'ava classes4 8hich 8ere shipped 8ith the 'ava Bects4 '*C connections4 B8ing and B+7 G/Is
through more sophisticated third part1 tools and pac!ages. Ever1 'ava API can e
accessed from the scripting language Open O>ect 0e??.
7he module provides the developer 8ith some asic and general functions for loading
classes4 for e?ample the method bs!'%a$(%ass) 8hich acts as a creator for 'ava
o>ects. 7he follo8ing snippet should sho8 ho8 eas1 it is to access a 'ava Class 8ith
>ust a fe8 lines of code. One remar! in advance4 in 0e?? one can include a module 8ith
functions in t8o different 8a1s3
Usin ::RE-UIRES dire!ti6e9 7his !ind of including the module has to e in
the last line of 1our script. It is invo!ed efore an1 other statement is interpreted
and ecause of this4 the functions 8ould e availale across the 8hole 0e??
scripts. 7he ne?t snippet uses this st1le of import.
Usin CALL 7he invocation of (ALLhas to e efore the first usage of a
method of the included module. In the case of including BSF'(LS4 (ALL
BSF'(LSshould e 8ritten4 efore one calls a *B2 function. 7he latter of the
snippets for *B2#0e?? uses this st1le of import.
2lat"dF
8/13/2019 WIRTSCHAFTSUNIVERSITT WIEN BAKKALAUREATSARBEIT
23/82
General Part Page )(
7his snippet sho8s ho8 to create a ne8 Dateo>ect and store this o>ect into a 0e??
variale. $ateOb+ectcontains no8 a 'ava o>ect4 to 8hich a message is send using the
t8iddle operator. Bending a message in 0e?? means to call a method on this o>ect.
Again the result4 a Stringo>ect4 is saved into a 0e?? variale and is printed 8ith the
help of the SAYcommand.
7he BSF'(LSmodule also contains some useful helper classes4 li!e message o?es
and input o?es 8hich are uild open the 'ava class 'OptionPane. 7he ne?t snippet
uses a message o? to notif1 the user aout something.
7he script sends the class $ia%g the message messageBx8ith the te?t that should
e displa1ed. 7here are some other parameter4 8hich are optional4 for e?ample the title
of the dialog and the t1pe.
,&.&9 UN3&CLS
7his section 8ill present the final step to automate OpenOffice.org programs using the
module UNO'(LS4 8hich ma!es the life of developer easier4 ecause this module
provides common functionalit14 8hich is used across the automation process.
+ithout using UNO'(LSit 8ould ta!e up to )$ lines of code to >ust open a lan! +riter
document. All the initiali6ation of U,L,es%ers4 NamingSerices and Factries is a
ver1 intricate 8a1 of doing such asic tas!s. And ecause the process of creating
macros or scripts for automation in OpenOffice.org should e a ver1 simple thing to do4
UNO'(LSprovides the developer 8ith a load of helper functions. 7he difficult parts and
those parts4 8hich 8ill e the same for ever1 script one 8ants to 8rite4 are summed upin single methods li!e UNO'createDes.t/01. 7his method ta!es care of nearl1
Snippet : .SF4/e00 message bo0 e0ample
Snippet *: .SF4/e00 simple e0ample
8/13/2019 WIRTSCHAFTSUNIVERSITT WIEN BAKKALAUREATSARBEIT
24/82
General Part Page )#
ever1thing from creating the /DO runtime to instantiating the /0@ 8here
OpenOffice.org is listening on.
7he ne?t snippet 8ill sho8 ho8 eas1 it is to create an empt1 +riter document 8hen 1ouare using the UNO'(LSmodule3
Bnippet uses another helper routine contained in the UNO'(LS4 .UNO2n&r/s& 7his
function creates an empt1 &r/ert3o>ect.
*ecause UNO'(LS alread1 includes BSF'(LS4 there is no need for a ,E4UI,E
statement in those scripts4 8hich 8ant to use the OpenOffice.org /DO modules.
,&.&= R*utines
A short overvie8 of some methods presented in the reference card included in the
current *B2#0e?? version3
un'createDes.t/05cntext61 - returns the %ca% O/enO!!ice $es.t/ b+ect
un'get&r/erties01 - returns a b%an. $e%imite$) enc$e$ string 7ith a%% $e!ine$
/r/erties !r the serice b+ect
un'getScri/t(ntext01 - returns a UNO /rx3) i! the ,exx scri/t 7as in.e$
b3 O/enO!!ice) 'ni% e%se' The UNO /rx3 b+ect has the !%%7ing meth$s)
returning cntext re%ate$ UNO /rx3 b+ects8
o getDcument 0the $cument serice b+ect) an "#$e%1
o getDes.t/ 0the $es.t/ serice b+ect) an "Des.t/1
o get(m/nent(ntext 0the cntext b+ect) an "(m/nent(ntext1
*B2#0e"=aF *B2#0e"=F
Snippet : sing !"CS
8/13/2019 WIRTSCHAFTSUNIVERSITT WIEN BAKKALAUREATSARBEIT
25/82
General Part Page )$
,&9 Su77ar/
7his paragraph sums up the previous chapters to ma!e again clear4 ho8 the
automation of Impress in this achelor paper is going to e accomplished.
7o illustrate this procedure2igure from a previous achelor thesis from a student of
the universit1 of usiness administration in ,ienna sho8s the different la1ers et8een a
method call in Open O>ect 0e?? and OpenOffice.org.
Figure 6: From oo/e00 to -utomation #-,am$5%
7he scripts developed in Open O>ect 0e?? are using the module UNO'(LSto enefit
from the simplified o>ect creations and initiali6ations. In the ne?t step4 the procedures
in UNO'(LSuse the functionalit1 provided 1 the module BSF'(LS. As 8ritten in the
chapter aout *B24 one can use a scripting language4 in this case and 8ith the
*B2#0e?? e?tension the scripting language Open O>ect 0e??4 to ma!e use of 'ava.
E?actl1 this point rings sustantial improvement to the development process ecause
it is not necessar1 to develop in 'ava and
1 the use of UNO'(LSone can save a lot of lines of code
In OpenOffice.org there is a comprehensive support of 'ava to communicate 8ith the
/DO components. 7his represents the 'ava /DO la1er on 2igure .
8/13/2019 WIRTSCHAFTSUNIVERSITT WIEN BAKKALAUREATSARBEIT
26/82
General Part Page )
7he 'ava /DO model then is connected to the /DO certainl1 and this leads to
OpenOffice.org itself to conduct the automation.
2lat"$F
As the last chapters have sho8n4 an open source scripting language can e used to
control and automate an open source office suite on ehalf of OpenOffice.org. *ut not
onl1 that4 OpenOffice.org itself can invo!e Open O>ect 0e?? macros.
7his fact is ver1 important4 ecause all of the snippets for automating Impress 8ill e
8ritten in form of macros.
It comines the po8er and straightfor8ardness of Open O>ect 0e?? 8ith the fullfeatured and open interfaces of OpenOffice.org to ma!e it possile to easil1 automate
the programs of this office suite4 even 8ithout 8ide e?perience in the field of
programming and development.
. Installati*n 1uide
7his chapter 8ill descrie and sho8 ho8 to set up the environment for developing and
running the snippets provided 1 this paper. 7his section 8ill onl1 tal! aout the currentversions of each application and programming language.
7he steps (.%4 (.). and (.( must not e follo8ed 1 in this specific order. 7he onl1 step4
8hich has a fi?ed order is step numer #4 the installation of *B2#0e??. 7he other
installations should e finished prior to this tas!.
.&+ Installati*n
8/13/2019 WIRTSCHAFTSUNIVERSITT WIEN BAKKALAUREATSARBEIT
27/82
8/13/2019 WIRTSCHAFTSUNIVERSITT WIEN BAKKALAUREATSARBEIT
28/82
Installation Guide Page )
.&9 Installati*n BSF9Re''
7he installation of *B2#0e?? is proal1 the most sophisticated step for preparing the
computer for the automation snippets. *ut if one follo8s the installation guide supplied8ith the release and the previous steps 8ere finished successfull14 there should e no
prolems4 even for non9e?perts.
7he current release of the *B2#0e?? is availale under http3--8i.8u9
8ien.ac.at-rgf-re??-sf#re??-currentthe 8e space from Prof. r. ag. 2latscher on the
universit1 of usiness administration 8e server.
*B2#0e?? comes in form of a 6ip file4 8hich contains all files4 the installation scripts4some e?amples from previous achelor thesisL and other 0e?? communit1 memers
and installation guides for ever1 step.
2or the first part of the installation4 the *B2#0e?? part4 the file rea$meBSF9,exx'txtis
the proper one. 7o start the installation run the setup script setu/'rexusing the re??
command. 7his command should no8 e availale in the command prompt after
installing Open O>ect 0e?? in one of the previous steps.
7his script should create four ne8 files3
sf#re??.cmd +ith this4 *B2#0e?? scripts can alread1 e run
install*B2#0e??.cmd 7his script copies the 'ava archives :>ars; and d1namic
lin! liraries to the used 'ava e?tension folder. Do8 ever1 'ava application can
use *B2#0e??
uninsta%%BSF9,exx'cm$ 7his script undoes the actions from the install script.
setEnirnment9BSF9,exx'cm$ 7his script sets the proper environment
variales for using *B2#0e??
On a @inu? PCLs all the generated scripts 8ill not have the e?tension cmd4 the scripts
are .sh files.
0unning the script install*B2#0e?? 8ill finish the installation 1 no8 and *B2#0e??can e tested 1 calling different !inds of commands to ensure that ever1thing is
http://wi.wu-wien.ac.at/rgf/rexx/bsf4rexx/currenthttp://wi.wu-wien.ac.at/rgf/rexx/bsf4rexx/currenthttp://wi.wu-wien.ac.at/rgf/rexx/bsf4rexx/currenthttp://wi.wu-wien.ac.at/rgf/rexx/bsf4rexx/currenthttp://wi.wu-wien.ac.at/rgf/rexx/bsf4rexx/currenthttp://wi.wu-wien.ac.at/rgf/rexx/bsf4rexx/currenthttp://wi.wu-wien.ac.at/rgf/rexx/bsf4rexx/currenthttp://wi.wu-wien.ac.at/rgf/rexx/bsf4rexx/current8/13/2019 WIRTSCHAFTSUNIVERSITT WIEN BAKKALAUREATSARBEIT
29/82
Installation Guide Page )
8or!ing correctl1.
0unning the scripts in!BSF'rex and in!BSF-'rex 8ith oth the rexx and rexx+
command should give the user an output in form of the registered *B2 functions.
*B2#0e??"=9(F
7he second part of the installation is to ma!e the ridge to OpenOffice.org and install
the 0e?? support for the office suite.
7he corresponding readme file is called rea$meOO'txt.
7he first step is to ensure that 'ava is enaled for OpenOffice.org. 2or this reason start
an1 application of the office suite4 for e?ample +riter4 and select the menu item
O/tins in the T%smenu. In the tree on the left side there is an entr1 called :aa)
8hich sho8s some options on the right side of the dialog.
Figure *: "ptions ialog in ""o
2igure =sho8s the dialog in 8hich the user has to select the desired '0E. 7his version
should e the same as the version for 8hich *B2#0e?? is installed. After ma!ing
changes on this settings4 OpenOffice.org as 8ell as the 5uic!Btarter should e closed.
0unning the command rexx setu/OO'rex /ath-tOO-$irectr38ill create the installscripts for the OpenOffice.org support.
8/13/2019 WIRTSCHAFTSUNIVERSITT WIEN BAKKALAUREATSARBEIT
30/82
Installation Guide Page ("
An e?ample3
rexx setu/OO'rex ;$8'
Again some scripts for installing the support4 uninstalling and setting up of theenvironmental variales 8ill e generated.
0unning the insta%%OO'cm$ 8ill actuall1 install the support. All Instances of
OpenOffice.org should e closed to ensure that the configuration ta!es effect in ever1
module.
7o test the OpenOffice.org support there are a t8o 0e?? scripts :testOO'rex and
testOO='rex; 8hich should e started 8ith either the rexxand rexx+command.
7he scripts should open a +riter document and insert some te?t into the document.
7he last step for the configuration and installation is the macro support in
OpenOffice.org. 7o do that clic! on the menu entr1 SExtensin #anager in the T%s
menu in an OpenOffice.org application. After clic!ing on A$$ and selecting the >ar9!i%e
Scri/t&ri$erFr,exx'+ar4 it 8ill install the macro support for Open O>ect 0e??.
*B2#0e"=dF
Figure : 0tension &anager
After restarting OpenOffice.org4 in the menu #acrsVW Organi?e #acrs1ou can see if
the installation 8as finished successfull1. 2igure sho8s e?actl1 ho8 it should loo!
li!e.
8/13/2019 WIRTSCHAFTSUNIVERSITT WIEN BAKKALAUREATSARBEIT
31/82
8/13/2019 WIRTSCHAFTSUNIVERSITT WIEN BAKKALAUREATSARBEIT
32/82
Impress Automation Page ()
9 I7(ress Aut*7ati*n
After creating the asis !no8ledge for conducting automation in OpenOffice.org4 this
chapter contains general information aout the document overvie8 of Impress and
some descriptive 8ords regarding the automation.
7his achelor paper 8ants to sho8 ho8 Open O>ect 0e?? can ease the life of
presenters using Impress. 7he e?amples presented in this paper can also rush up and
advance e?isting presentations also in consideration of the audience.
A lot of presentations created 1 students4 managers or normal 'ohn oes lac! of
different !inds of gimmic!s4 8hich are ver1 useful for oth the presenter himself and the
audience. 7hose improvements can e guideposts to illustrate the status of the current
slide in the presentation and other helpful and valuale things.
7he implementation of this automation 8ill e developed in form of macros 8ritten in
Open O>ect 0e??4 ecause this !ind of reali6ation 8ould allo8 running the scripts on
e?isting presentation 1 selecting a menu entr1 in the OpenOffice.org application.
7his paper 8ill not cover an1 stand9alone Open O>ect 0e?? scripts ecause suchehavior 8ill not meet the given reKuirements for this application area.
7he starting point of each automation process is an e?isting :e?isting from the content
point of vie8; presentation4 8hich should e further enhanced 1 the macros provided
in this achelor paper.
9&+ 1eneral
In OpenOffice.org Impress and ra8 are vector9oriented applications for creatingpresentations and dra8ings. *oth applications support different !ind of things to dra84
for e?ample rectangles4 te?t4 curves and other graphic shapes.
/nli!e to the te?t documents in +riter and the spreadsheet document in Calc4 ra8
and Impress use the so9called dra8pages for displa1ing the content. 2igure %"reflects
this fact 8ith the dra8page container in the middle of the graphic. 7he document
service manager pictured 8ith the faric s1mol at the top of the figure is used for
creating all the dra8ing elements and shape o>ects. 7hese o>ects 8ill e later
inserted into the dra8pages.
8/13/2019 WIRTSCHAFTSUNIVERSITT WIEN BAKKALAUREATSARBEIT
33/82
Impress Automation Page ((
7here are man1 different t1pes of shapes to add to a dra8page in Impress & ra84 the
most important ones are3
@ra/hicOb+ectSha/e4 8hich can displa1 an image from a file
(nnectrSha/e4 8hich can connect other Sha/es
E%%i/seSha/escan e various circles and ellipses.
,ectang%eSha/ethat pictures a rectangle on a dra8page
TextSha/ecan e used for displa1ing te?t on a slide
7he controller is used to present the presentation in the G/I and for assigning st1les
and la1outs to the dra8ings.
7he figure also sho8s the interfaces for accessing the #aster&ages and the
La3ut#anager.
Oooev"$F
8/13/2019 WIRTSCHAFTSUNIVERSITT WIEN BAKKALAUREATSARBEIT
34/82
Impress Automation Page (#
Figure 1$: 7resentation ocument &odel #""oe)$5%
9&, Intr*du!ti*n E'a7(le7o ma!e the introduction for the Open O>ect 0e?? macros easier4 this paragraph 8ill
tal! aout a ver1 simple macro4 8hich adds a slide to an e?isting presentation and puts
a te?t field 8ith a t1pe of the notorious SHello +orld lael on each additional slide. 7he
previous slide 8ill get a te?t field that causes a slide transition to the ne?t page 8hen
someone clic!s on the te?t.
7here 8ill e an e?amination of ever1 action ta!en in the script so that the asicfunctionalit14 li!e getting access to the dra8 pages4 8ill e cleared 1 no8.
8/13/2019 WIRTSCHAFTSUNIVERSITT WIEN BAKKALAUREATSARBEIT
35/82
Impress Automation Page ($
ost of the functions4 interfaces and properties 8ill e used throughout the 8hole
achelor paper.
*ecause the snippets 8ill e e?ecuted as a macro inside OpenOffice.org the first thingto do is to open an e?isting presentation or to create a ne8 one using Impress.
In the menu T%s #acrs Organi?e #acrsthere is the entr1 ,exx) 8hich opens
a dialog to create4 edit and run the 8ritten macros4 as sho8n on 2igure %%4
Figure 11: "rgani8e &acros
7he dialog for editing the macros acts also as a deug 8indo8 8here the lines4 8hich
cause an error are mar!ed and the error message is sho8n. /nfortunatel1 there is no
s1nta? highlighting in the edit dialog4 so the est thing one can do is to 8rite the macros
in a third part1 editor li!e gvim4 8hich supports the s1nta? of Open O>ect 0e??. 7hen4
after 8riting the scripts4 the1 can e copied into the macro editor of OpenOffice.org.
8/13/2019 WIRTSCHAFTSUNIVERSITT WIEN BAKKALAUREATSARBEIT
36/82
Impress Automation Page (
Figure 12: &acro editor
7he dialog is sho8n on the 2igure %)4 from here the script can e e?ecuted. 7he source
code of the introduction snippet can e seen in the Bnippet %%.
7his cutout from Bnippet %%8ill get the Scri/ting(ntext8hose function is to provide
the developer 8ith the document services and interfaces.
7his is specific for the macros in Open O>ect 0e??4 if one 8ants to 8or! 8ith the
Impress interfaces from a standalone script4 the UNO'createDes.t/01 procedure 8ill
get the related interfaces.
Snippet 1$: 'nter(aces wit, es9top
8/13/2019 WIRTSCHAFTSUNIVERSITT WIEN BAKKALAUREATSARBEIT
37/82
Impress Automation Page (=
8/13/2019 WIRTSCHAFTSUNIVERSITT WIEN BAKKALAUREATSARBEIT
38/82
8/13/2019 WIRTSCHAFTSUNIVERSITT WIEN BAKKALAUREATSARBEIT
39/82
Impress Automation Page (
7he t8o shapes4 one TextSha/efor the SHello +orld lael and the other one for the
clic! te?t field to go to the ne?t slide4 are added to the dra8pages using the add
method.
7he variale run&resentatin is " 8hen the user does 8ant to start the presentation
after the changes of the slides 8ere done. 7he impress document 8ill e Kueried for
the "&resentatinSu//%ier interface. 7his interface has a method to get the
"&resentatininterface to start the presentation.
7he ne?t t8o figures sho8 the output of the macro.
After running the script4 the presentation 8ill e updated and depending on the decision
made at the eginning4 it 8ill also e started.
Figure 13: =Hello World= >e0tS,ape
Figure 14: Clic9)ent on >e0tS,ape
8/13/2019 WIRTSCHAFTSUNIVERSITT WIEN BAKKALAUREATSARBEIT
40/82
8/13/2019 WIRTSCHAFTSUNIVERSITT WIEN BAKKALAUREATSARBEIT
41/82
Impress Automation Page #%
9&.&+ E'a7(le>+
8/13/2019 WIRTSCHAFTSUNIVERSITT WIEN BAKKALAUREATSARBEIT
42/82
8/13/2019 WIRTSCHAFTSUNIVERSITT WIEN BAKKALAUREATSARBEIT
43/82
Impress Automation Page #(
7he first e?ample for advancing presentations in OpenOffice.org adds a progress ar to
the ottom of each slide. *ecause in most presentations4 the first slide is some sort of a
8elcome or introduction page4 this page 8ill not contain a progress ar.
7hat means on the second slide 1ou can see a rectangle 8ith a filled section on the left
side3
Figure 15: 7rogress bar
Each slide 8ill sho8 ne8 shapes4 8here the filled shapes 8idth is increased
incremental. 7his 8ill give the audience a feeling ho8 advanced the progress of the
presentation is. Also the presenter 8ill get a critical information aout the state of the
presentation.
As the presentation goes on4 the rectangle 8ill e filled more and more till it reaches the
end.
7he first thing to do is to go through all the e?isting dra8pages. 7his 8ill e reali6ed
8ith a DO TO iteration starting 8ith the dra8page 8ith inde? %4 8hich is actuall1 the
second slide ecause the inde? is " ased. If there is alread1 a progress ar4 the
grouped shape 8ill e removed. 7he macro then generates a ,ectang%eSha/e and
passes it to a routine4 8hich resi6es the component and places it to the correct position.
8/13/2019 WIRTSCHAFTSUNIVERSITT WIEN BAKKALAUREATSARBEIT
44/82
Impress Automation Page ##
7his snippet sho8s the routine for positioning and resi6ing shapes4 8hich is used in
ever1 macro. As one can see the routine creates a Si?eO>ect 8ith arguments numer
t8o and three and a &intO>ect 8ith the latter one. Argument numer one is the
shape itself.
7his routine creates the round edges of oth the order shape and the shape that
represents the progress in the presentation 1 ad>usting the 8idth of the rectangle.
7here is also a shado8 created for the shapes.
7he shape for the progress ar filling has not >ust a normal solid color. 7he Fi%%St3%eis a
@ra$ientO>ect4 8hich can create a transition from one color to another 8ith detailed
configuration ho8 this transition 8ill e done. 7he @ra$ientO>ect is generated in ano8n function. 7his function returns the o>ect and can e accessed from outside
through the variale resu%t. Again the function for formatting the shape 8ill e called
here.
8/13/2019 WIRTSCHAFTSUNIVERSITT WIEN BAKKALAUREATSARBEIT
45/82
Impress Automation Page #$
9&.&, E'a7(le>,
8/13/2019 WIRTSCHAFTSUNIVERSITT WIEN BAKKALAUREATSARBEIT
46/82
Impress Automation Page #
8/13/2019 WIRTSCHAFTSUNIVERSITT WIEN BAKKALAUREATSARBEIT
47/82
8/13/2019 WIRTSCHAFTSUNIVERSITT WIEN BAKKALAUREATSARBEIT
48/82
Impress Automation Page #
7his snippet sho8s the placing of the circle shapes4 8hich represent the points in the
Pacman game. 7he placement starts at the current position of Pacman and adds
E%%i/seSha/eo>ects to the dra8page till the ?9coordinate reaches the end in form of
the position of the cherr1.
7he circles are >ust E%%i/seSha/e o>ects that have the (irc%ein$ FULL. 7he other
options are SE(TIONfor a circle 8ith a cut connected 1 a line4 (UTfor a circle 8ith a
cut connected 1 t8o lines :for e?ample a ca!e diagram; and an A,(4 8hich is a circle
8ith an open cut.
After the creation of the shapes4 the1 8ill e added to a Sha/e@ru/4 all of the shapes
8hich are inside the sha/e@ru/ o>ect 8ill e grouped together using the
"Sha/e@ru/erfrom a dra8page. 7o e ale to remove them in the case of a second
run of the macro the group gets a name.
8/13/2019 WIRTSCHAFTSUNIVERSITT WIEN BAKKALAUREATSARBEIT
49/82
Impress Automation Page #
9&.&. E'a7(le>.
8/13/2019 WIRTSCHAFTSUNIVERSITT WIEN BAKKALAUREATSARBEIT
50/82
Impress Automation Page $"
8/13/2019 WIRTSCHAFTSUNIVERSITT WIEN BAKKALAUREATSARBEIT
51/82
Impress Automation Page $%
7he t1pe of the ne?t macro is again a progress sho8ing macro. Instead of Pacmangoing to the end of the slide4 there 8ill e a fuse 8ith a flame. 7he fuse is connected to
a om. 7he fuse 8ill e reali6ed 8ith the help of a ,ectang%eSha/e. As the progress
of the presentation is advancing4 the fuse is urning do8n. One of the difference to the
last e?ample is that the macro is generating a ne8 slide at the end of the presentation
and put some shapes on the dra8page. 7he ne8 dra8page as 8ell as the shapes on it
8ill have some effects4 8hich are assigned in the script.
7he last slide contains a TextSha/e 8ith the te?t *OOOXXQ and an
@ra/hicOb+ectSha/e8ith an e?plosion image.
Snippet 14: .omb $3;bombre0
8/13/2019 WIRTSCHAFTSUNIVERSITT WIEN BAKKALAUREATSARBEIT
52/82
Impress Automation Page $)
7he /0@ of the image is set in the cutout using the"&r/ert3Setinterface. 7he method
used for fetching the filename is operating s1stem independent. 7he images have to e
in the same folder as the presentation. 7he animation effect of the TextSha/e
*OOOXXXXQ 8ill e a fade from the center of the slide and 8ill e conducted in a
fast sped. Bimilar to that4 the effect of the image 8ith the e?plosion should e a little it
slo8er and 8ith a hori6ontal rotation.
7he counterpart to the Sha/e AnimatinE!!ect o>ect for slide transitions is the
Fa$eE!!ecto>ect. 7he ,ANDO#value sets a random effect to the slide transition 8ith
medium speed. 7he om 8ith the fuse as 8ell as the slide 8ith the e?plosion image
are displa1ed on the ne?t t8o figures.
Figure 1*: .omb wit, (use
8/13/2019 WIRTSCHAFTSUNIVERSITT WIEN BAKKALAUREATSARBEIT
53/82
Impress Automation Page $(
2or sure4 this demonstration of a progress illustration and the e?ample 8ith Pacman is
not ver1 appropriate for usiness presentations. 2or these !ind of presentations the
progress ar 8ill e the est solution. 7his should e >ust a proof of concept ho8 eas1 it
is to put a ver1 helpful feature to a presentation4 also 8ith a 8hiff of pla1fulness..
Figure 1: 0plosion slide
8/13/2019 WIRTSCHAFTSUNIVERSITT WIEN BAKKALAUREATSARBEIT
54/82
Impress Automation Page $#
9&.&9 E'a7(le>9
8/13/2019 WIRTSCHAFTSUNIVERSITT WIEN BAKKALAUREATSARBEIT
55/82
8/13/2019 WIRTSCHAFTSUNIVERSITT WIEN BAKKALAUREATSARBEIT
56/82
Impress Automation Page $
time 8ill e a SE(TIONE%%i/seSha/e. 7o configure the section4 the values for the start
and end angle need to e set.
*1 setting the values as seen in the cutout aove4 the section is forced to start at %)
oNcloc!. ecreasing the startAng%e value after each slide 8ill e?pand the section
cloc!8ise. 7he fill color of the section is also changing throughout the presentation.
7he color is represented 1 a he?adecimal value. Btarting 8ith 8hite :222222; and
fading to red. 7his is done 1 sutracting values from the start color. 7he transition of
the cloc!s loo!s li!e 2igure %.
Figure 1: Cloc9 transition
8/13/2019 WIRTSCHAFTSUNIVERSITT WIEN BAKKALAUREATSARBEIT
57/82
Impress Automation Page $=
9&.&= E'a7(le>=
8/13/2019 WIRTSCHAFTSUNIVERSITT WIEN BAKKALAUREATSARBEIT
58/82
Impress Automation Page $
7he ne?t macro 8ill support the presenter 1 automaticall1 creating a slide in the
middle of the presentation. 2or long presentations it could e necessar1 to ma!e such a
rea! to let the audience get some refreshments. 7he user 8ill e as!ed for the
duration of the rea! and for a message4 8hich 8ill e sho8n on the ne8 slide. 7he
duration has to e entered in minutes. After the time is elapsed the presentation 8ill
continue 8ith the ne?t slide.
7he slide efore the rea! as 8ell as all created shapes 8ill get effects in addition to
the slide transition.
Snippet 16: Create .rea9 Slide $5;brea9re0
8/13/2019 WIRTSCHAFTSUNIVERSITT WIEN BAKKALAUREATSARBEIT
59/82
Impress Automation Page $
7his line is responsile for the e?ception handling in Open O>ect 0e??. If an1 error
occurs during the runtime of the script4 the code at the mar!erANY8ill e e?ecuted.
7he script has to handle possile e?ceptions ecause it has to operate 8ith a data
entered 1 a user. +hen the user does not enter a valid numer4 there 8ould e a
BTD7AM error and the script 8ould crash.
In order to handle those prolems4 the mar!er ANY8as implemented in the rear
section of the script.
7he code then sho8s up another message o? 8ith the line numer 8here the prolem
occurred.
7he cutout from the snippet aove sho8s ho8 the middle of the presentation is een
calculated. 7he -- operator acts as the modulo function in Open O>ect 0e?? to get the
rest of a division of integers.7he in/utBxprocedure from the BSF'(LSmodule is used for entering the duration of
the rea!. 7he value 8ill e saved into the variale minutes.
7he dialogs and the rea! slide can e seen on the ne?t figures.
8/13/2019 WIRTSCHAFTSUNIVERSITT WIEN BAKKALAUREATSARBEIT
60/82
8/13/2019 WIRTSCHAFTSUNIVERSITT WIEN BAKKALAUREATSARBEIT
61/82
Impress Automation Page %
9&.&? E'a7(le>?
8/13/2019 WIRTSCHAFTSUNIVERSITT WIEN BAKKALAUREATSARBEIT
62/82
Impress Automation Page )
8/13/2019 WIRTSCHAFTSUNIVERSITT WIEN BAKKALAUREATSARBEIT
63/82
8/13/2019 WIRTSCHAFTSUNIVERSITT WIEN BAKKALAUREATSARBEIT
64/82
Impress Automation Page #
returned value 8ill e the nil o>ect.
7he he?adecimal value ""A represents a line rea! and is used in a dialog o? to
separate the message.
7he macro can also change the animation effects of ever1 shape on ever1 dra8page if
the user 8ants to. /sing the interface"Sha/esof a dra8page one can get access to
ever1 shape o>ect on it. @i!e iterating through the dra8pages of a presentation4 one
can access the shapes using an inde?.
7he dialogs for as!ing after the effects are sho8n on the ne?t figures.
Figure 22: Slide e((ects
8/13/2019 WIRTSCHAFTSUNIVERSITT WIEN BAKKALAUREATSARBEIT
65/82
Impress Automation Page $
Figure 23: ialog (or c,oosing t,e speed
Figure 24: uration o( one slide
Figure 25: Auestion dialog (or end slide
8/13/2019 WIRTSCHAFTSUNIVERSITT WIEN BAKKALAUREATSARBEIT
66/82
Impress Automation Page
9&.&@ E'a7(le>@
8/13/2019 WIRTSCHAFTSUNIVERSITT WIEN BAKKALAUREATSARBEIT
67/82
Impress Automation Page =
8/13/2019 WIRTSCHAFTSUNIVERSITT WIEN BAKKALAUREATSARBEIT
68/82
Impress Automation Page
7he goal of this macro is to create guideposts on the slides of a presentation. 7he onl1
thing the creator of the presentation has to care aout is that the slides have te?t fields8ith the predefined st1le Hea$ing or Hea$ingassigned to them. 7hen the macro
Snippet 1: @uideposts (rom ,eadings $*;guidepostsre0
8/13/2019 WIRTSCHAFTSUNIVERSITT WIEN BAKKALAUREATSARBEIT
69/82
8/13/2019 WIRTSCHAFTSUNIVERSITT WIEN BAKKALAUREATSARBEIT
70/82
8/13/2019 WIRTSCHAFTSUNIVERSITT WIEN BAKKALAUREATSARBEIT
71/82
Impress Automation Page =%
9&.& E'a7(le>
8/13/2019 WIRTSCHAFTSUNIVERSITT WIEN BAKKALAUREATSARBEIT
72/82
Impress Automation Page =)
8/13/2019 WIRTSCHAFTSUNIVERSITT WIEN BAKKALAUREATSARBEIT
73/82
8/13/2019 WIRTSCHAFTSUNIVERSITT WIEN BAKKALAUREATSARBEIT
74/82
Impress Automation Page =#
*ut the most important difference is the use of oo!mar!s in this script. Each guidepost
gets an On(%ic.event4 8hich directl1 leads to the slide 8ith the corresponding heading.
7his 8ill provide a fast and eas1 8a1 of navigating through the presentation 8ithout
8riting those actions and graphical shapes manuall1.
Onl1 the parts of the code4 8hich are different compared to Bnippet %8ill e sho8n in
this paragraph.
+hen the macro has found a slide 8ith a heading te?t field4 the related dra8page gets
a name4 to e ale to access it later 8ith a oo!mar!. 7he name is set 8ith the help of
the"Name$interface and is the inde? of the heading slide.
7hese lines set the name of the dra8page to the inde? of the slide.
7his cutout sho8s ho8 the On(%ic.event is een connected to the oo!mar! using the
inde? of the guidepost circle shape. 7he te?t inside the circle 8ill e a serial numer
and is assigned to the shape in the line %(#.
Figure 2*: @uideposts wit, boo9mar9s
8/13/2019 WIRTSCHAFTSUNIVERSITT WIEN BAKKALAUREATSARBEIT
75/82
Impress Automation Page =$
9&.& E'a7(le>
8/13/2019 WIRTSCHAFTSUNIVERSITT WIEN BAKKALAUREATSARBEIT
76/82
Impress Automation Page =
8/13/2019 WIRTSCHAFTSUNIVERSITT WIEN BAKKALAUREATSARBEIT
77/82
Impress Automation Page ==
7he last macro of this achelor paper is a script that generates a slide 8ith the agenda
of the presentation. 7he agenda 8ill e created using the te?t fields 8ith heading st1le.
If the agenda is alread1 created in the past and the script is started again4 the agenda
8ill e updated 8ith the current heading tags. 7his script 8ill again use various parts of
the previous e?amples to retrieve the arra1 8ith the heading information. 7o ensure a
failsafe process4 the macro chec!s if there is an1 heading te?t field at all and sho8s a
message dialog in the case of none?istence.
7his procedure gets a dra8page as an argument and sets the name of it for enaling
the possiilit1 to refresh it 8hen running the macro at a later date. 7he La3utpropert1
is set to % that means the slide gets a te?t field at the top and a listing at the center. 7he
te?t of the te?t shape is set to AgendaQ 1 accessing the shape 8ith the inde? ".
2or formating the listing 8ith the headings this procedure is called. 7he line spacing as
8ell as the font si6e is ad>usted to create a good loo!ing agenda.
Snippet 2$: Create an agenda $;agendare0
8/13/2019 WIRTSCHAFTSUNIVERSITT WIEN BAKKALAUREATSARBEIT
78/82
Impress Automation Page =
7he script appends each heading to the listing te?t field on the agenda slide 1 using a
Text(ursr. @ine numer =( sho8s the command ho8 the cursor 8ill e placed at the
end. 7he"Text,ange interface 8ill then e used to append the te?t 8ith a carriage
return.
2igure )sho8s a generated agenda slide.
Figure 2: @enerated agenda
8/13/2019 WIRTSCHAFTSUNIVERSITT WIEN BAKKALAUREATSARBEIT
79/82
Conclusion Page =
= C*n!lusi*n
7he conclusion of this achelor thesis is that 8ith the help of Open O>ect 0e??4 *ean
Bcripting 2rame8or!4 *B2#0e?? and OpenOffice.org it is possile to automate the
office suite 8ithout an1 e?pert !no8ledge aout programming languages.
7he onl1 real reKuirement for the development is to e ale to search self9dependent in
the 8e for the functionalit1 one is loo!ing for. *ut this is not >ust the case for this t1pe
of 8or!. 2or nearl1 ever1 tas! one is coping 8ith4 there is a need to find the desired
information as fast as possile4 ut not loosing the sight of the Kualit1 of the results.
7he open source scripting language Open Office 0e?? is ver1 eas1 to learn and canuse the massive amount of classes provided 1 'ava 8ith the help of *B2 and
*B2#0e??. 7his 8ill give the scripting language more po8er and opens the door to the
/DO ased architecture of OpenOffice.org.
7he macros themselves are ver1 useful and could save presenters a lot of time4
especiall1 for the macros4 8hich are dealing 8ith the progress indication. *ut that
should not e the onl1 important output of this paper. Other students 8ho are also
interested in this topic can enefit from the results and uild open the snippets to create
even more sophisticated macros.
*ecause there 8ere not so man1 e?amples for automation of Impress4 actuall1 there is
onl1 one on the homepage of OpenOffice.org4 it 8as not ver1 eas1 to get in touch 8ith
the interfaces4 properties and functionalit1 of Impress. +ith the help of the e?cellent
evelopers Guide4 some nutshells from previous achelor papers and the online
communit1 of OpenOffice.org it 8as possile to create the snippets in this achelorpaper in a reasonale amount of time.
It also emerged that the functions in oth the UNO'(LS and BSF'(LS 8ere ver1
helpful4 for e?ample the ones 8hich return the names of the inferfaces using reflection
and the properties of an o>ect.
And if more and more snippets and e?amples are getting online4 the communit1 gro8s
and gro8s and the collective !no8ledge 8ould increase over the 1ears4 the po8er of
OpenOffice.org and open source soft8are in general 8ill e strengthen.
8/13/2019 WIRTSCHAFTSUNIVERSITT WIEN BAKKALAUREATSARBEIT
80/82
8/13/2019 WIRTSCHAFTSUNIVERSITT WIEN BAKKALAUREATSARBEIT
81/82
0eferences Page %
2lat"$F 2latscher4 0on1 G.3 Automating OpenOffice.org 8ith Oo0e??3
Architecture4 Gluing to 0e?? using *B2#0e??4 )""$4
+irtschaftsuniversitt +ien :,ienna /niversit1 of Economics and
*usiness Administration;4 Austria4
http3--8i.8u9
8ien.ac.at-rgf-re??-or?%-)""$or?%Gluing)oo0e??OOo.pdf4
retrieved on )""=9"$9)"
2lat"aF 2latscher4 0on1 G.3 0esurrecting 0EMM4 Introducing O>ect 0e??4
)""4 +irtschaftsuniversitt +ien :,ienna /niversit1 of Economics and
*usiness Administration;4 Austria4
http3--prog.vu.ac.e-Y8dmeuter-0@"-2latscher.pdf4
retrieved on )""=9"$9%
2lat"F 2latscher4 0on1 G.3 Automatisierung von +indo8s An8endungen :%; 9
Einfhrung4 Zerlic!4 An8eisungen4 Pro6eduren4 2un!tionen4
http3--8i.8u9
8ien.ac.at-rgf-8u-lehre-auto8in-material-folien-Automatisierung"%.pdf4
retrieved on )""9"(9%$
2lat"cF 2latscher4 0on1 G.3 7he ,ienna ,ersion of *B2#0e??4 Presentation at
the )"" International 0e?? B1mposium4 /BA4 )""4
http3--8i.8u98ien.ac.at-rgf-re??-or?%=-)""or?%=*B2,iennaEd.pdf4
retrieved on )""=9"$9)"
2lat"dF 2latscher4 0on1 G.3 Automatisierung von +indo8sAn8endungen :(;
Ausnahmen :E?ceptions;4 0eferen6en4 ire!tiven :33routine4 33reKuires;http3--8i.8u9
8ien.ac.at-rgf-8u-lehre-auto8in-material-folien-Automatisierung"(.pdf4
retrieved on )""9"(9%=
OO0e??"=aF Open O>ect 0e?? Homepage4 Product *rochure4
http3--888.oore??.org-oo0e??9*rochure.pdf4
retrieved on )""=9"$9%=
http://wi.wu-wien.ac.at/rgf/rexx/orx16/2005_orx16_Gluing2ooRexx_OOo.pdfhttp://wi.wu-wien.ac.at/rgf/rexx/orx16/2005_orx16_Gluing2ooRexx_OOo.pdfhttp://prog.vub.ac.be/~wdmeuter/RDL06/Flatscher.pdfhttp://wi.wu-wien.ac.at/rgf/wu/lehre/autowin/material/folien/Automatisierung_01.pdfhttp://wi.wu-wien.ac.at/rgf/wu/lehre/autowin/material/folien/Automatisierung_01.pdfhttp://wi.wu-wien.ac.at/rgf/rexx/orx17/2006_orx17_BSF_ViennaEd.pdfhttp://wi.wu-wien.ac.at/rgf/wu/lehre/autowin/material/folien/Automatisierung_03.pdfhttp://wi.wu-wien.ac.at/rgf/wu/lehre/autowin/material/folien/Automatisierung_03.pdfhttp://www.oorexx.org/ooRexx-Brochure.pdfhttp://wi.wu-wien.ac.at/rgf/rexx/orx16/2005_orx16_Gluing2ooRexx_OOo.pdfhttp://wi.wu-wien.ac.at/rgf/rexx/orx16/2005_orx16_Gluing2ooRexx_OOo.pdfhttp://wi.wu-wien.ac.at/rgf/rexx/orx16/2005_orx16_Gluing2ooRexx_OOo.pdfhttp://wi.wu-wien.ac.at/rgf/rexx/orx16/2005_orx16_Gluing2ooRexx_OOo.pdfhttp://wi.wu-wien.ac.at/rgf/rexx/orx16/2005_orx16_Gluing2ooRexx_OOo.pdfhttp://wi.wu-wien.ac.at/rgf/rexx/orx16/2005_orx16_Gluing2ooRexx_OOo.pdfhttp://prog.vub.ac.be/~wdmeuter/RDL06/Flatscher.pdfhttp://prog.vub.ac.be/~wdmeuter/RDL06/Flatscher.pdfhttp://prog.vub.ac.be/~wdmeuter/RDL06/Flatscher.pdfhttp://wi.wu-wien.ac.at/rgf/wu/lehre/autowin/material/folien/Automatisierung_01.pdfhttp://wi.wu-wien.ac.at/rgf/wu/lehre/autowin/material/folien/Automatisierung_01.pdfhttp://wi.wu-wien.ac.at/rgf/wu/lehre/autowin/material/folien/Automatisierung_01.pdfhttp://wi.wu-wien.ac.at/rgf/wu/lehre/autowin/material/folien/Automatisierung_01.pdfhttp://wi.wu-wien.ac.at/rgf/wu/lehre/autowin/material/folien/Automatisierung_01.pdfhttp://wi.wu-wien.ac.at/rgf/wu/lehre/autowin/material/folien/Automatisierung_01.pdfhttp://wi.wu-wien.ac.at/rgf/rexx/orx17/2006_orx17_BSF_ViennaEd.pdfhttp://wi.wu-wien.ac.at/rgf/rexx/orx17/2006_orx17_BSF_ViennaEd.pdfhttp://wi.wu-wien.ac.at/rgf/rexx/orx17/2006_orx17_BSF_ViennaEd.pdfhttp://wi.wu-wien.ac.at/rgf/wu/lehre/autowin/material/folien/Automatisierung_03.pdfhttp://wi.wu-wien.ac.at/rgf/wu/lehre/autowin/material/folien/Automatisierung_03.pdfhttp://wi.wu-wien.ac.at/rgf/wu/lehre/autowin/material/folien/Automatisierung_03.pdfhttp://wi.wu-wien.ac.at/rgf/wu/lehre/autowin/material/folien/Automatisierung_03.pdfhttp://wi.wu-wien.ac.at/rgf/wu/lehre/autowin/material/folien/Automatisierung_03.pdfhttp://wi.wu-wien.ac.at/rgf/wu/lehre/autowin/material/folien/Automatisierung_03.pdfhttp://www.oorexx.org/ooRexx-Brochure.pdfhttp://www.oorexx.org/ooRexx-Brochure.pdfhttp://www.oorexx.org/ooRexx-Brochure.pdf8/13/2019 WIRTSCHAFTSUNIVERSITT WIEN BAKKALAUREATSARBEIT
82/82
0eferences Page )
OO0e??"=F Open O>ect 0e?? Homepage4 Aout4
http3--888.oore??.org-inde?.html4 retrieved on )""=9"$9%=
OpenOf"=aF Open Office Homepage4 Aout 4http3--aout.openoffice.org-inde?.html4 retrieved on )""=9"$9)"
OpenOf"=F Open Office Homepage4 Product 4
http3--888.openoffice.org-product-inde?.html4 retrieved on )""=9"$9)"
OpenOf"=cF Open Office Homepage4 API evelopers Guide4 2irst Bteps4
http3--api.openoffice.org-docs-evelopersGuide-2irstBteps-2irstBteps.?
html4 retrieved on )""=9"$9)"
OOoev"$F Open Office Homepage4 evelopers Guide4 a1 )""$4
http3--api.openoffice.org-docs-evelopersGuide-evelopersGuide.pdf4
retrieved on )""=9"$9)%#
+i!i*B"=F +i!imedia 2oundation Inc4 *ean Bcripting 2rame8or!4
http3--en.8i!ipedia.org-8i!i-*eanBcripting2rame8or!4
retrieved on )""=9"$9"
+i!iOo"=F +i!imedia 2oundation Inc4 OpenOffice.org4
http3--en.8i!ipedia.org-8i!i-Openoffice.org4 retrieved on )""=9"$9"$
+i!i0e"=F +i!imedia 2oundation Inc4 0EMM4
http3--en.8i!ipedia.org-8i!i-0EMM4 retrieved on )""=9"$9"#
http://www.oorexx.org/index.htmlhttp://about.openoffice.org/index.htmlhttp://www.openoffice.org/product/index.htmlhttp://api.openoffice.org/docs/DevelopersGuide/FirstSteps/FirstSteps.xhtmlhttp://api.openoffice.org/docs/DevelopersGuide/FirstSteps/FirstSteps.xhtmlhttp://api.openoffice.org/docs/DevelopersGuide/DevelopersGuide.pdfhttp://en.wikipedia.org/wiki/Bean_Scripting_Frameworkhttp://en.wikipedia.org/wiki/Openoffice.orghttp://en.wikipedia.org/wiki/REXXhttp://www.oorexx.org/index.htmlhttp://www.oorexx.org/index.htmlhttp://www.oorexx.org/index.htmlhttp://about.openoffice.org/index.htmlhttp://about.openoffice.org/index.htmlhttp://about.openoffice.org/index.htmlhttp://www.openoffice.org/product/index.htmlhttp://www.openoffice.org/product/index.htmlhttp://www.openoffice.org/product/index.htmlhttp://api.openoffice.org/docs/DevelopersGuide/FirstSteps/FirstSteps.xhtmlhttp://api.openoffice.org/docs/DevelopersGuide/FirstSteps/FirstSteps.xhtmlhttp://api.openoffice.org/docs/DevelopersGuide/FirstSteps/FirstSteps.xhtmlhttp://api.openoffice.org/docs/DevelopersGuide/FirstSteps/FirstSteps.xhtmlhttp://api.openoffice.org/docs/DevelopersGuide/FirstSteps/FirstSteps.xhtmlhttp://api.openoffice.org/docs/DevelopersGuide/FirstSteps/FirstSteps.xhtmlhttp://api.openoffice.org/docs/DevelopersGuide/DevelopersGuide.pdfhttp://api.openoffice.org/docs/DevelopersGuide/DevelopersGuide.pdfhttp://api.openoffice.org/docs/DevelopersGuide/DevelopersGuide.pdfhttp://en.wikipedia.org/wiki/Bean_Scripting_Frameworkhttp://en.wikipedia.org/wiki/Bean_Scripting_Frameworkhttp://en.wikipedia.org/wiki/Bean_Scripting_Frameworkhttp://en.wikipedia.org/wiki/Openoffice.orghttp://en.wikipedia.org/wiki/Openoffice.orghttp://en.wikipedia.org/wiki/Openoffice.orghttp://en.wikipedia.org/wiki/REXXhttp://en.wikipedia.org/wiki/REXXhttp://en.wikipedia.org/wiki/REXX