jl165 merging heads
[LibreOffice.git] / testautomation / framework / tools / includes / toolbar_tools.inc
blobd3539abf8a37aaf0610e9dba06638c6f5956d150
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 : gregor.hartmann@oracle.com
30 '* short description : global update test (Standardbar)
32 '\***************************************************************************
34 function hAccessStandardBar() as boolean
36     '///<h3>Verify that the Standard Bar exists</h3>
37     '///<i>This function works for all gApplications</i><br>
38     '///<u>Input</u>:
39     '///<ol>
40     '///+<li>Nothing</li>
41     '///</ol>
42     '///<u>Returns</u>:
43     '///<ol>
44     '///+<li>Errorcondition (boolean)</li>
45     '///<ul>
46     '///+<li>TRUE if StandardBar exists</li>
47     '///+<li>FALSE if standardBar does not exist</li>
48     '///</ul>
49     '///</ol>
50     '///<u>Description</u>:
51     '///<ul>
52     const CFN = "hAccessStandardBar::"
53     dim brc as boolean
54     
55     printlog( CFN & "Enter" )
57     '///+<li>Open a new document</li>
58     hCreateDocument()
60     '///+<li>Try to access the standardbar (query .exists())</li>
61     kontext "StandardBar"
62     if ( StandardBar.exists() ) then
63         if ( standardbar.isVisible() ) then
64             printlog( CFN & "StandardBar is visible. Good." )
65             brc = true
66         else
67             warnlog( "The StandardBar is not visible in " & gApplication )
68             brc = false
69         endif
70     else
71         warnlog( "The StandardBar does not exist in " & gApplication )
72         brc = false
73     endif
75     '///+<li>Close the navigator</li>
76     kontext "Navigator"
77     hCloseDialog( Navigator, "close,optional" )
78     
79     '///+<li>Close the document</li>
80     hDestroyDocument()
81     hAccessStandardBar() = brc
82     printlog( CFN & "Exit" )
83     '///</ul>
84     
85 end function
87 '*******************************************************************************
89 function hResetStandardBar() as boolean
91     '///<h3>Reset the Standard Bar to default configuration</h3>
92     '///<u>Input</u>:
93     '///<ol>
94     '///+<li>Nothing</li>
95     '///</ol>
96     '///<u>Returns</u>:
97     '///<ol>
98     '///+<li>Errorcondition (boolean)</li>
99     '///<ul>
100     '///+<li>Always TRUE as no errorconditions are handled yet</li>
101     '///</ul>
102     '///</ol>
103     '///<u>Description</u>:
104     '///<ul>
105     
106     const CFN = "hResetStandardBar::"
107     const MIN_STATIC_DELAY = 1
108     const DEFAULT_DELAY = 2
109     const MENUITEM_RESTORE = 1
110     const MENUITEM_CLOSEMENU = 0
111     const TOOLBAR_MENUITEM_CUSTOMIZE = 2
112     const EXPECTED_RESOURCE_ID = 304
114     
115     printlog( CFN & "Enter" )
117     '///+<li>Create a new document</li>
118     hInitSingleDoc()
119     printlog " - Standardbar"
121     kontext "standardbar"
122     if ( Standardbar.exists() ) then
123     
124         '///+<li>Open the context menu on Standardbar</li>
125         Standardbar.OpenContextmenu
126         sleep( MIN_STATIC_DELAY )
127         
128         '///+<li>Click on 2. entry (Cutomize Toolbar)</li>
129         hMenuselectNr ( TOOLBAR_MENUITEM_CUSTOMIZE )
130         sleep( MIN_STATIC_DELAY )
131         
132         kontext
133         Active.SetPage TabCustomizeToolbars
134         sleep( MIN_STATIC_DELAY )
136         '///+<li>Toggle to 'Toolbars' tab page.</li>
137         kontext "TabCustomizeToolbars"
138         if TabCustomizeToolbars.Exists( DEFAULT_DELAY ) then
139             sleep( MIN_STATIC_DELAY )
141             '///+<li>Press in first section '... Toolbars' the 'toolbar'-button</li>
142             MenuBtn.Click
143             sleep( MIN_STATIC_DELAY )
144             
145             '///+<li>A drop down menu will be opened.</li>
146             '///+<li>Select the first enabled menu entry which should be 'Restore...'</li>
147             hMenuSelectNr( MENUITEM_RESTORE )
148             sleep( MIN_STATIC_DELAY )
150             kontext
151             if ( active.exists( DEFAULT_DELAY ) ) then
152                 if ( Active.GetRT = EXPECTED_RESOURCE_ID ) then
153                 
154                     '///+<li>Press Yes button on verification dialog.</li>
155                     Active.Yes()
156                 end if
157             else
158                 warnlog( "No verification comes up if the RESET button has been pressed!" )
159             end if
161             '///+<li>Close 'Toolbars' tab page and the dialog with OK.</li>
162             kontext "tabcustomizetoolbars"
163             hCloseDialog( TabCustomizeToolbars, "ok" )
164         else
165             warnlog( "Cutomuze Toolbar not open (from context menu)" )
166             'Closing the Context menu if the dialog does not come up.
167             Menuselect( MENUITEM_CLOSEMENU )
168         endif
169             
170     else
171         warnlog( CFN & "Could not access Standardbar" )
172     endif
174     '///+<li>Close document.</li>
175     hDestroyDocument()
176     hResetStandardBar() = true
177     printlog( CFN & "Exit" )
178     '///</ul>
179     
180 end function
182 '*******************************************************************************
184 function hStandardbarItemGetCount() as integer
186     '///<h3>Update test: Get the number of items in the StandardBar</h3>
187     '///<i>Starting point: Any plain document</i><br>
188     '///<u>Input</u>:
189     '///<ol>
190     '///+<li>Nothing</li>
191     '///</ol>
192     '///<u>Returns</u>:
193     '///<ol>
194     '///+<li>Number of items on the toolbar (integer)</li>
195     '///<ul>
196     '///+<li>No errorhandling is done. Beware.</li>
197     '///</ul>
198     '///</ol>
199     '///<u>Description</u>:
200     '///<ul>
201     
202     dim iToolbarItemsCurrent as integer
203     const DEFAULT_TOOLBAR_ITEMCOUNT = 30
204     const WEBLOG_PUBLISHER = 2
205     
206     const CFN = "hStandardbarItemGetCount::"
208     gApplication = "WRITER"
209     printlog( CFN & "Enter" )
210     
211     '///+<li>Look for additional icons on the standardbar (through extensions)</li>
212     printlog( CFN & "Count all items at the Standardbar" )
214     '///+<li>Open the context menu on the Standardbar</li>
215     Kontext "Standardbar"
216     Standardbar.OpenContextmenu()
218     '///+<li>Select the 1. entry</li>
219     hMenuselectNr( 1 )
221     '///+<li>Count all entries ( there must be 30 entries )</li>
222     iToolbarItemsCurrent = 0
223     iToolbarItemsCurrent = hMenuItemGetCount()
224    
225     ' StarOffice/StarSuite come with a preinstalled extension beginning with build
226     ' 9181. This extension is not shipped with the Solaris patches as this would
227     ' violate Sun's patching policy. So StarSuite/StarOffice now have 30 or 31
228     ' items on the standardbar, OOo and its spinoffs have 30.
229     
230     select case ( iToolbarItemsCurrent )
231     case DEFAULT_TOOLBAR_ITEMCOUNT
232         printlog( CFN & "Default number of items found" )
233     case DEFAULT_TOOLBAR_ITEMCOUNT + WEBLOG_PUBLISHER
234         printlog( CFN & "Default icons + Weblog publisher icons found" )
235     case else
236         warnlog( CFN & "Number of icons is unexpected: " & iToolbarItemsCurrent )
237     end select
239     '///+<li>close the context menu</li>
240     hMenuClose()
241     hStandardbarItemGetCount() = iToolbarItemsCurrent
242     printlog( CFN & "Exit" )
243     '///</ul>
244     
245 end function
247 '*******************************************************************************
249 function hToggleToolbarItem( iMenuPos as integer )
251     '///<h3>Update test: Toggle an icon on the Standardbar (on/off)</h3>
252     '///<i>Starting point: Any plain document</i><br>
253     '///<u>Input</u>:
254     '///<ol>
255     '///+<li>Position of the item in the menu (integer)</li>
256     '///</ol>
257     '///<u>Returns</u>:
258     '///<ol>
259     '///+<li>Nothing</li>
260     '///</ol>
261     '///<u>Description</u>:
262     '///<ul>
263     
264     const CFN = "hToggleToolbarItem::"
265     const INVISIBLE_ITEMS_MODIFIER = 3
266     dim iItemsInMenu as integer
267     
268     printlog( CFN & "Enter with option (Menu position): " & iMenuPos )
270     '///+<li>Open the context menu of the standard bar</li>
271     Kontext "Standardbar"
272     Standardbar.OpenContextmenu()
273     
274     '///+<li>Retrieve the number of items in the menu</li>
275     iItemsInMenu = hMenuItemGetCount()
276     
277     ' in case the toolbar does not fit into the window we have more items
278     ' (those that are invisible will be listed as context menu entries),
279     ' the menuitem (invisible items) is placed at position nItems - 3
280     '///+<li>Take the number of items -3, select the entry</li>
281     hMenuselectNr( iItemsInMenu - INVISIBLE_ITEMS_MODIFIER )
282     
283     '///+<li>Select the provided menu position</li>
284     hMenuselectNr( iMenuPos )        
285     printlog( CFN & "Exit" )
286     '///</ul>
288 end function
290 '*******************************************************************************
292 function hStandardbarLoadUrl() as boolean
294     '///<h3>Update test: Access the url-entryfield</h3>
295     '///<i>Starting point: Any plain document</i><br>
296     '///<u>Input</u>:
297     '///<ol>
298     '///+<li>Nothing</li>
299     '///</ol>
300     '///<u>Returns</u>:
301     '///<ol>
302     '///+<li>Nothing</li>
303     '///</ol>
304     '///<u>Description</u>:
305     '///<ul>
306     
308     ' this function tries to write to the url-EntryField. This should fail,
309     ' because the item is not visible. Then the item should be enabled,
310     ' written to and disabled again (no use of reset toolbar here, this is
311     ' done in another testcase
312     
313     dim iItemMenuPos as integer : iItemMenuPos = 1
314     
315     const ITEM_MENU_POSITION = 1
316     const CFN = "hStandardbarLoadUrl::"
317     
318     printlog( CFN & "Enter" )
320     '///+<li>Write to URL-Filed (fails: Entryfiled is not visible)</li>
321     try
322         Kontext "Standardbar"
323         URLEingabe.settext( "Should not work" )
324         warnlog( CFN & "The Load URL EntryField is visible and active" )
325     catch
326         printlog( CFN & "The Load URL EntryField is not visible. Good." )
327     endcatch
328     
329     '///+<li>add the control to the standardbar</li>
330     printlog( CFN & "activate load URL" )
331     hToggleToolbarItem( ITEM_MENU_POSITION )
332     
333     '///+<li>verify its existence by entering some text</li>
334     Kontext "Standardbar"
335     try
336         URLEingabe.settext( "Should work" )
337         printlog( CFN & "The Load URL REntryFiled is visible and active. Good." )
338     catch
339         warnlog( CFN & "Could not write to 'load url' control" )
340     endcatch
341         
342     '///+<li>remove the control from the standardbar</li>
343     printlog( CFN & "Deactivate load URL" )
344     hToggleToolbarItem( ITEM_MENU_POSITION )
345     Kontext "Standardbar"
346     
347     '///+<li>try to modify non existing object, failure expected</li>
348     try
349         Kontext "Standardbar"
350         URLEingabe.settext( "Should not work" )
351         warnlog( CFN & "The Load URL EntryField is visible and active." )
352     catch 
353         printlog( CFN & "The Load URL EntryField is not visible. Good." )
354     endcatch
355     printlog( CFN & "Exit" )
356     '///</ul>
357     
358 end function
360 '*******************************************************************************
362 function hStandardbarNewDialog()
363     
364     '///<h3>Update test: New from Template via StandardBar</h3>
365     '///<i>Starting point: Plain document</i><br>
366     '///<u>Input</u>:
367     '///<ol>
368     '///+<li>Nothing</li>
369     '///</ol>
370     '///<u>Returns</u>:
371     '///<ol>
372     '///+<li>Nothing</li>
373     '///</ol>
374     '///<u>Description</u>:
375     '///<ul>
376     
377     const CFN = "hStandardbarNewDialog::"
378     const ITEM_MENU_POSITION = 3
379     const TEMPLATE_DIALOG_MAX_RETRIES = 3
380     const RC_TIMEOUT = -1
382     dim iTry as integer
384     printlog( CFN & "Enter" )
386     '///+<li>Click on &quot;New from Template&quot;-button (fails, it is not visible)</li>
387     try
388         NeuDialog.Click()
389         warnlog( CFN & "The 'New from Template'-button should not be visible." )
390     catch
391         printlog( CFN & "The control is not present or active." )
392     endcatch
393     
394     '///+<li>add the control to the standardbar</li>
395     printlog( CFN & "activate New from Template button" )
396     hToggleToolbarItem( ITEM_MENU_POSITION )
398     '///+<li>click the button</li>
399     for iTry = 1 to TEMPLATE_DIALOG_MAX_RETRIES
401         Kontext "Standardbar"
402         hClickButton( NeuDialog )
404         '///+<li>handle possible dialogs (there should never be one)</li>
405         kontext "Active"
406         if ( active.exists() ) then
407             warnlog( CFN & "Unexpected active" )
408             printlog( CFN & active.gettext() )
409             if ( hCloseDialog( Active, "ok" ) = RC_TIMEOUT ) then
410                 warnlog( CFN & "Unknown dialog blocks test, now crashing" )
411             endif
412         endif
414         '///+<li>close the templates and samples dialog</li>
415         printlog( CFN & "Close templates and samples (cancel)" )
416         Kontext "TemplateAndDocuments"
417         if ( TemplateAndDocuments.Exists( 5 ) ) then
418             hCloseDialog( TemplateAndDocuments, "cancel" )
419             exit for
420         else
421             if ( iTry = TEMPLATE_DIALOG_MAX_RETRIES ) then
422                 warnlog( CFN & "The 'Template and Documents'-dialog was not activated" )
423             endif
424         endif
426     next iTry
429     '///+<li>finally remove the button from the toolbar</li>
430     printlog( CFN & "Deactivate New from Template button" )
431     hToggleToolbarItem( ITEM_MENU_POSITION )
432     Kontext "Standardbar"
433     '///</ul>
434     
435 end function
437 '*******************************************************************************
439 function hStandardbarSaveAs()
441     '///<h3>Update test: SaveAs button on StandardBar</h3>
442     '///<i>Starting point: Any plain document</i><br>
443     '///<u>Input</u>:
444     '///<ol>
445     '///+<li>Nothing</li>
446     '///</ol>
447     '///<u>Returns</u>:
448     '///<ol>
449     '///+<li>Nothing</li>
450     '///</ol>
451     '///<u>Description</u>:
452     '///<ul>
455     dim bBreakOnError as boolean
457     const ITEM_MENU_POSITION = 6
458     const CFN = "hStandardbarSaveAs::"
460     printlog( CFN & "Enter" )
462     '///+<li>Click on SaveAs (fails, item is not visible)</li>
463     try
464         SpeichernAls.Click()
465     catch
466         printlog( CFN & "The control is not present, good." )
467     endcatch
468     
469     kontext "SpeichernDlg"
470     if ( SpeichernDlg.exists( 1 ) ) then
471         warnlog( "#i46363# (?)The 'SaveAs'-button should be invisible." )
472         hCloseDialog( SpeichernDlg, "cancel" )
473     else
474         
475         '///+<li>Add the control to the standardbar</li>
476         printlog( CFN & "Activate 'Save As' button" )
477         hToggleToolbarItem( ITEM_MENU_POSITION )
478         
479         '///+<li>Click the button</li>
480         Kontext "Standardbar"
481         hWaitForObject( SpeichernAls , 5000 )
482         SpeichernAls.click()    
483     
484         '///+<li>Close the save-as dialog</li>
485         printlog( CFN & "Close Save As (cancel)" )
486         Kontext "SpeichernDlg"
487         if ( SpeichernDlg.Exists( 2 ) ) then
488             hCloseDialog( SpeichernDlg, "cancel" )
489         else
490             qaerrorlog( "Retrying" )
491             Kontext "Standardbar"
492             SpeichernAls.click()
493             Kontext "SpeichernDlg"
494             if ( SpeichernDlg.exists( 1 ) ) then
495                 printlog( "FileSaveAs dialog is open" )
496                 hCloseDialog( SpeichernDlg, "cancel" )
497             else
498                 warnlog( CFN & "The 'Save As'-dialog was not activated" )
499             endif
500         endif
501        
502         '///+<li>Remove the button from the toolbar</li>
503         printlog( CFN & "Deactivate 'Save as' button" )
504         hToggleToolbarItem( ITEM_MENU_POSITION )
505         
506     endif
507     
508     Kontext "Standardbar"
509     printlog( CFN & "Exit" )
510     '///</ul>
511     
512 end function