jl165 merging heads
[LibreOffice.git] / testautomation / framework / optional / includes / ole_3.inc
blob0636bfacb576c0e7643311c136aee2d558395efd
1 'encoding UTF-8  Do not remove or change this line!
2 '**************************************************************************
3 ' DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
5 ' Copyright 2000, 2010 Oracle and/or its affiliates.
7 ' OpenOffice.org - a multi-platform office productivity suite
9 ' This file is part of OpenOffice.org.
11 ' OpenOffice.org is free software: you can redistribute it and/or modify
12 ' it under the terms of the GNU Lesser General Public License version 3
13 ' only, as published by the Free Software Foundation.
15 ' OpenOffice.org is distributed in the hope that it will be useful,
16 ' but WITHOUT ANY WARRANTY; without even the implied warranty of
17 ' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18 ' GNU Lesser General Public License version 3 for more details
19 ' (a copy is included in the LICENSE file that accompanied this code).
21 ' You should have received a copy of the GNU Lesser General Public License
22 ' version 3 along with OpenOffice.org.  If not, see
23 ' <http://www.openoffice.org/license.html>
24 ' for a copy of the LGPLv3 License.
26 '/************************************************************************
28 '* owner : thorsten.bosbach@oracle.com
30 '* short description :
32 '\******************************************************************************
34 testcase tDraw_As_OLE_Object()
35     
36     call ClosePresentationfloat()
37     call hInsertOLEObject( true, gOLEDraw, "DRAW" )
38     'call hInsertOLEObject( false, gOLEDraw, "DRAW" )
39     
40 endcase
42 testcase tCalc_as_OLE_Object()
43     
44     call ClosePresentationfloat()
45     call hInsertOLEObject( true, gOLECalc, "CALC" )
46     'call hInsertOLEObject( false, gOLECalc, "CALC" )
47     
48 endcase
50 testcase tImpress_As_OLE_Object()
51     
52     call ClosePresentationfloat()
53     call hInsertOLEObject( true, gOLEImpress, "IMPRESS" )
54     'call hInsertOLEObject( false, gOLEImpress, "IMPRESS" )
55     
56 endcase
58 testcase tWriter_As_OLE_Object()
59     
60     call ClosePresentationfloat()
61     call hInsertOLEObject( true, gOLEWriter, "WRITER" )
62     'call hInsertOLEObject( false, gOLEWriter, "WRITER" )
63     
64 endcase
66 testcase tMath_As_OLE_Object()
67     
68     call ClosePresentationfloat()
69     call hInsertOLEObject( true, gOLEMath, "MATH" )
70     'call hInsertOLEObject( false, gOLEMath, "MATH" )
71     
72 endcase
74 testcase tChart_As_OLE_Object()
75     
76     call ClosePresentationfloat()
77     call hInsertOLEObject( true, gOLEChart, "CHART" )
78     'call hInsertOLEObject( false, gOLEChart, "CHART" )
79     
80 endcase
82 '*******************************************************************************
84 function hInsertOLEObject( bRemoveFocus as boolean, cOLEObject as string, cOleType as string ) as beoolean
85     
86     dim sFile as String
87     dim bOleAvailable as boolean
88     
89     printlog( "" )
90     printlog( "Beginning testcase with options: " )
91     printlog( "* Remove focus...: " & bRemoveFocus )
92     printlog( "* OLE object name: " & cOLEObject )
93     printlog( "* OLE object type: " & cOLEType )
94     printlog( "* Document type..: " & gApplication )
95     printlog( "" )
96     
97     ' We cannot insert an OLE object of same type as the current document
98     ' So writer/writer, calc/calc, masterdoc/writer is skipped ...
99     if ( gApplication = cOleType ) then
100         printlog( "Skipping " & cOleType & " as OLE object" )
101         hInsertOLEObject() = false
102         exit function
103     endif
104     
105     if ( gApplication = "MASTERDOCUMENT" and cOleType = "WRITER" ) then
106         printlog( "Skipping " & cOleType & " as OLE object" )
107         hInsertOLEObject() = false
108         exit function
109     endif
110     
111     hCreateDocument()
112     
113     printlog( "Menu: insert / object / OLE object" )
114     InsertObjectOLEObject
115     
116     Kontext "OLEObjektEinfuegen"
117     if ( OLEObjektEinfuegen.exists( 1 ) ) then
118         
119         printlog( "Select 'create new'" )
120         NeuErstellen.Check()
121         
122         printlog( "Select objecttype: " & cOLEObject )
123         ObjektTyp.Select( cOLEObject )
124         
125         printlog( "Click OK" )
126         hCloseDialog( OLEObjektEinfuegen, "ok" )
127     else
128         warnlog( "Insert OLE object dialog is missing, test ends" )
129         hDestroyDocument()
130         hInsertOLEObject() = false
131         exit function
132     endif
133     
134     if ( bRemoveFocus ) then
135         printlog( "Remove focus from OLE object" )
136         call OLERemoveFocus()
137     else
138         printlog( "Focus is not to be removed from OLE object" )
139         
140         ' The following can - in some cases - reproduce a nasty crash-bug when
141         ' saving files with selected/activated OLE object
142         select case gApplication
143         case "DRAW"      : gMouseClick( 99 , 99 )
144         case "IMPRESS"   : gMouseClick( 99 , 99 )
145         end select
146     endif
147     
148     sFile = ConvertPath ( gOfficePath + "user\work\ole_" & cOleType )
149     printlog( "Save the file; File to be written (w/o extension): " & sFile )
150     hDeleteFile( sFile )
151     hFileSaveAs( sFile )
152     hDestroyDocument()
153     
154     printlog( "Reopen the file: " & sFile )
155     hFileOpen( sFile )
156     
157     bOleAvailable = isOleAvailable()
158     if ( bOleAvailable ) then
159         
160         kontext "Navigator"
161         if ( Navigator.exists() ) then hCloseDialog( Navigator, "close,optional" )
162         
163         call OLESetFocus()
164         
165         call SendEscape()
166     else
167         qaErrorLog( "#i44725# OLE Object not saved in Master Document" )
168     endif
169     
170     printlog( "Cleanup: Close the document, delete workfile" )
171     hDestroyDocument()
172     hDeleteFile( sFile )
173     hInsertOLEObject() = true
174     
175 end sub
177 '*******************************************************************************
179 function isOleAvailable() as boolean
180     
181     dim i as integer
182     dim a as integer
183     
184     const CFN = "isOleAvailable::"
185     
186     printlog( CFN & "Testing whether OLE object is present in Navigator" )
187 '    qaerrorlog( CFN & "Replace me i'm old, poorly written and undocumented" )
188     
189     isOleAvailable = FALSE
190     ' check if OLE-Objects are in the document with the navigator
191     kontext "NavigatorGlobaldoc"
192     if NavigatorGlobaldoc.exists( 1 ) then
193         printlog CFN & "Navigator globaldoc is available"
194         if NOT AuswahlListe.exists then
195             Umschalten.click
196         endif
197         a = AuswahlListe.getItemCount
198         ' somehow not all items might be displayed
199         if NOT (a>2) then
200             inhaltsansicht.click
201             i = AuswahlListe.getItemCount
202             if NOT(i>a) then
203                 inhaltsansicht.click
204             else
205                 a = i
206             endif
207         endif
208         AuswahlListe.typeKeys("<home>")
209         'fold everything
210         for i = 1 to a
211             AuswahlListe.typeKeys("-<down>")
212         next i
213         ' unfold everything, until there is something to unfold
214         ' then we found the object we looked for: OLE
215         AuswahlListe.typeKeys("<home>")
216         i = 0
217         a = AuswahlListe.getItemCount
218         ' don't run indefinite
219         while ((AuswahlListe.getItemCount = a) AND (i < a))
220             AuswahlListe.typeKeys("+<down>")
221             inc(i)
222         wend
223         try
224             printlog CFN & AuswahlListe.getSelText
225         catch
226             qaerrorlog CFN & "no item in navigator is selected"
227         endcatch
228         ' activate object
229         AuswahlListe.typeKeys("<return>")
230         i = AuswahlListe.getItemCount
231         printlog CFN & i
232         if (i > a) then
233             isOleAvailable = TRUE
234         else
235             isOleAvailable = FALSE
236         endif
237     else
238         Kontext "NavigatorWriter"
239         if NOT NavigatorWriter.exists( 1 ) then
240             ViewNavigator
241         endif
242         Kontext "NavigatorWriter"
243         if NavigatorWriter.exists( 2 ) then ' was 5 secs
244             printlog CFN & "Navigator writer was available"
245             if NOT AuswahlListe.exists then
246                 Umschalten.click
247                 Sleep( 5 )
248             endif
249             a = AuswahlListe.getItemCount
250             ' somehow not all items might be displayed
251             if a=0 then
252                 Sleep( 5 )
253                  a = AuswahlListe.getItemCount
254             endif
255             if NOT (a>2) then
256                 inhaltsansicht.click
257                 Sleep( 3 )
258                 i = AuswahlListe.getItemCount
259                 if NOT(i>a) then
260                     qaerrorlog "failed"
261                 else
262                     a = i
263                 endif
264             endif
265             AuswahlListe.typeKeys("<home>")
266             'fold everything
267             for i = 1 to a
268                 AuswahlListe.typeKeys("-<down>")
269             next i
270             ' unfold everything, until there is something to unfold
271             ' then we found the object we looked for: OLE
272             AuswahlListe.typeKeys("<home>")
273             i = 0
274             a = AuswahlListe.getItemCount
275             ' don't run indefinite
276             while ((AuswahlListe.getItemCount = a) AND (i < a))
277                 AuswahlListe.typeKeys("+<down>")
278                 inc(i)
279             wend
280             try
281                 printlog CFN & AuswahlListe.getSelText
282             catch
283                 qaerrorlog CFN & "no item in navigator is selected"
284             endcatch
285             i = AuswahlListe.getItemCount
286             ' activate object
287             AuswahlListe.typeKeys("<return>")
288             if (i > a) then
289                 isOleAvailable = TRUE
290             else
291                 isOleAvailable = FALSE
292             endif
293         else
294             kontext "NavigatorDraw"
295             if NavigatorDraw.exists( 2 ) then ' was 5 secs
296                 printlog CFN & "Navigator draw is available"
297             else
298                 ViewNavigator
299             endif
300             kontext "NavigatorDraw"
301             if NavigatorDraw.exists( 2 ) then ' was 5 secs
302                 printlog CFN & "Navigator draw is available."
303                 if NOT Liste.exists then
304                     Umschalten.click
305                 endif
306                 Liste.typeKeys("<home>")
307                 'fold everything
308                 a = Liste.getItemCount
309                 for i = 1 to a
310                     Liste.typeKeys("-<down>")
311                 next i
312                 ' unfold everything, until there is something to unfold
313                 ' then we found the object we looked for: OLE
314                 Liste.typeKeys("<home>")
315                 i = 0
316                 a = Liste.getItemCount
317                 ' don't run indefinite
318                 while ((Liste.getItemCount = a) AND (i < a))
319                     Liste.typeKeys("+<down>")
320                     inc(i)
321                 wend
322                 try
323                     printlog CFN & Liste.getSelText
324                 catch
325                     qaerrorlog CFN & "no item in navigator is selected"
326                 endcatch
327                 i = Liste.getItemCount
328                 if (i > a) then
329                     isOleAvailable = TRUE
330                 else
331                     isOleAvailable = FALSE
332                 endif
333             else
334                 ' no globaldoc
335                 ' check if something is selected
336                 try
337                     EditCopy
338                     printlog CFN & "Something was selected; executed Edit->Copy"
339                     isOleAvailable = TRUE
340                 catch
341                     qaErrorLog CFN & "Nothing is selected."
342                     isOleAvailable = FALSE
343                 endcatch
344             endif
345         endif
346     endif
347     
348 end function