update dev300-m58
[ooovba.git] / testautomation / framework / tools / includes / toolbar_tools.inc
blobdec3b6ca11774818ed918325da290ac03af029fe
1 'encoding UTF-8  Do not remove or change this line!
2 '**************************************************************************
3 '* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 '* 
5 '* Copyright 2008 by Sun Microsystems, Inc.
6 '*
7 '* OpenOffice.org - a multi-platform office productivity suite
8 '*
9 '* $RCSfile: toolbar_tools.inc,v $
11 '* $Revision: 1.2 $
13 '* last change: $Author: obo $ $Date: 2008-07-25 09:56:35 $
15 '* This file is part of OpenOffice.org.
17 '* OpenOffice.org is free software: you can redistribute it and/or modify
18 '* it under the terms of the GNU Lesser General Public License version 3
19 '* only, as published by the Free Software Foundation.
21 '* OpenOffice.org is distributed in the hope that it will be useful,
22 '* but WITHOUT ANY WARRANTY; without even the implied warranty of
23 '* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
24 '* GNU Lesser General Public License version 3 for more details
25 '* (a copy is included in the LICENSE file that accompanied this code).
27 '* You should have received a copy of the GNU Lesser General Public License
28 '* version 3 along with OpenOffice.org.  If not, see
29 '* <http://www.openoffice.org/license.html>
30 '* for a copy of the LGPLv3 License.
32 '/************************************************************************
34 '* owner : joerg.skottke@sun.com
36 '* short description : global update test (Standardbar)
38 '\***************************************************************************
40 function hAccessStandardBar() as boolean
42     '///<h3>Verify that the Standard Bar exists</h3>
43     '///<i>This function works for all gApplications</i><br>
44     '///<u>Input</u>:
45     '///<ol>
46     '///+<li>Nothing</li>
47     '///</ol>
48     '///<u>Returns</u>:
49     '///<ol>
50     '///+<li>Errorcondition (boolean)</li>
51     '///<ul>
52     '///+<li>TRUE if StandardBar exists</li>
53     '///+<li>FALSE if standardBar does not exist</li>
54     '///</ul>
55     '///</ol>
56     '///<u>Description</u>:
57     '///<ul>
58     const CFN = "hAccessStandardBar::"
59     dim brc as boolean
60     
61     printlog( CFN & "Enter" )
63     '///+<li>Open a new document</li>
64     hCreateDocument()
66     '///+<li>Try to access the standardbar (query .exists())</li>
67     kontext "StandardBar"
68     if ( StandardBar.exists() ) then
69         if ( standardbar.isVisible() ) then
70             printlog( CFN & "StandardBar is visible. Good." )
71             brc = true
72         else
73             warnlog( "The StandardBar is not visible in " & gApplication )
74             brc = false
75         endif
76     else
77         warnlog( "The StandardBar does not exist in " & gApplication )
78         brc = false
79     endif
81     '///+<li>Close the navigator</li>
82     hCloseNavigator()
83     
84     '///+<li>Close the document</li>
85     hDestroyDocument()
86     hAccessStandardBar() = brc
87     printlog( CFN & "Exit" )
88     '///</ul>
89     
90 end function
92 '*******************************************************************************
94 function hResetStandardBar() as boolean
96     '///<h3>Reset the Standard Bar to default configuration</h3>
97     '///<u>Input</u>:
98     '///<ol>
99     '///+<li>Nothing</li>
100     '///</ol>
101     '///<u>Returns</u>:
102     '///<ol>
103     '///+<li>Errorcondition (boolean)</li>
104     '///<ul>
105     '///+<li>Always TRUE as no errorconditions are handled yet</li>
106     '///</ul>
107     '///</ol>
108     '///<u>Description</u>:
109     '///<ul>
110     
111     const CFN = "hResetStandardBar::"
112     
113     printlog( CFN & "Enter" )
115     '///+<li>Create a new document</li>
116     hInitSingleDoc()
117     printlog " - Standardbar"
119     kontext "standardbar"
120     if ( Standardbar.exists() ) then
121     
122         '///+<li>Open the context menu on Standardbar</li>
123         Standardbar.OpenContextmenu
124         sleep( 1 ) 
125         
126         '///+<li>Click on 2. entry (Cutomize Toolbar)</li>
127         hMenuselectNr (2)
128         sleep( 1 )
129         
130         kontext
131         Active.SetPage TabCustomizeToolbars
132         sleep( 1 )
134         '///+<li>Toggle to 'Toolbars' tab page.</li>
135         kontext "TabCustomizeToolbars"
136         if TabCustomizeToolbars.Exists( 2 ) then
138             '///+<li>Press in first section '... Toolbars' the 'toolbar'-button</li>
139             MenuBtn.Click
140             sleep( 1 )
141             
142             '///+<li>A drop down menu will be opened.</li>
143             '///+<li>Select the first enabled menu entry which should be 'Restore...'</li>
144             hMenuSelectNr(1)
145             sleep( 1 )
147             kontext
148             if ( active.exists( 2 ) ) then
149                 if Active.GetRT = 304 then
150                 
151                     '///+<li>Press Yes button on verification dialog.</li>
152                     Active.Yes
153                 end if
154             else
155                 warnlog( "No verification comes up if the RESET button has been pressed!" )
156             end if
158             '///+<li>Close 'Toolbars' tab page and the dialog with OK.</li>
159             kontext "tabcustomizetoolbars"
160             TabCustomizeToolbars.OK
161         else
162             warnlog( "Cutomuze Toolbar not open (from context menu)" )
163             'Closing the Context menu if the dialog does not come up.
164             Menuselect(0)
165         endif
166             
167     else
168         warnlog( CFN & "Could not access Standardbar" )
169     endif
171     '///+<li>Close document.</li>
172     hDestroyDocument()
173     hResetStandardBar() = true
174     printlog( CFN & "Exit" )
175     '///</ul>
176     
177 end function
179 '*******************************************************************************
181 function hStandardbarItemGetCount() as integer
183     '///<h3>Update test: Get the number of items in the StandardBar</h3>
184     '///<i>Starting point: Any plain document</i><br>
185     '///<u>Input</u>:
186     '///<ol>
187     '///+<li>Nothing</li>
188     '///</ol>
189     '///<u>Returns</u>:
190     '///<ol>
191     '///+<li>Number of items on the toolbar (integer)</li>
192     '///<ul>
193     '///+<li>No errorhandling is done. Beware.</li>
194     '///</ul>
195     '///</ol>
196     '///<u>Description</u>:
197     '///<ul>
198     
199     dim iToolbarItemsCurrent as integer
200     dim iToolbarItemsExpected as integer
201         iToolbarItemsExpected = 30
202     
203     const CFN = "hStandardbarItemGetCount::"
205     gApplication = "WRITER"
206     printlog( CFN & "Enter" )
207     
208     '///+<li>Look for additional icons on the standardbar (through extensions)</li>
209     printlog( CFN & "Count all items at the Standardbar" )
211     '///+<li>Open the context menu on the Standardbar</li>
212     Kontext "Standardbar"
213     Standardbar.OpenContextmenu()
215     '///+<li>Select the 1. entry</li>
216     hMenuselectNr( 1 )
218     '///+<li>Count all entries ( there must be 30 entries )</li>
219     iToolbarItemsCurrent = 0
220     iToolbarItemsCurrent = hMenuItemGetCount()
221    
222     ' StarOffice/StarSuite come with a preinstalled extension beginning with build
223     ' 9181. This extension is not shipped with the Solaris patches as this would
224     ' violate Sun's patching policy. So StarSuite/StarOffice now have 30 or 31
225     ' items on the standardbar, OOo and its spinoffs have 30.
226     
227     
228     if ( iToolbarItemsCurrent = iToolbarItemsExpected ) then
229         printlog( CFN & "Correct number of items on the StandardBar. Good" )
230     else
231         warnlog( CFN & "Expected: " & iToolbarItemsExpected & _
232                 " entries, found: " & iToolbarItemsCurrent )
233     endif
235     '///+<li>close the context menu</li>
236     hMenuClose()
237     hStandardbarItemGetCount() = iToolbarItemsCurrent
238     printlog( CFN & "Exit" )
239     '///</ul>
240     
241 end function
243 '*******************************************************************************
245 function hToggleToolbarItem( iMenuPos as integer )
247     '///<h3>Update test: Toggle an icon on the Standardbar (on/off)</h3>
248     '///<i>Starting point: Any plain document</i><br>
249     '///<u>Input</u>:
250     '///<ol>
251     '///+<li>Position of the item in the menu (integer)</li>
252     '///</ol>
253     '///<u>Returns</u>:
254     '///<ol>
255     '///+<li>Nothing</li>
256     '///</ol>
257     '///<u>Description</u>:
258     '///<ul>
259     
260     const CFN = "hToggleToolbarItem::"    
261     dim iItemsInMenu as integer
262     
263     printlog( CFN & "Enter with option (Menu position): " & iMenuPos )
265     '///+<li>Open the context menu of the standard bar</li>
266     Kontext "Standardbar"
267     Standardbar.OpenContextmenu()
268     
269     '///+<li>Retrieve the number of items in the menu</li>
270     iItemsInMenu = hMenuItemGetCount()
271     
272     ' in case the toolbar does not fit into the window we have more items
273     ' (those that are invisible will be listed as context menu entries),
274     ' the menuitem (invisible items) is placed at position nItems - 3
275     '///+<li>Take the number of items -3, select the entry</li>
276     hMenuselectNr( iItemsInMenu - 3 )
277     
278     '///+<li>Select the provided menu position</li>
279     hMenuselectNr( iMenuPos )        
280     printlog( CFN & "Exit" )
281     '///</ul>
283 end function
285 '*******************************************************************************
287 function hStandardbarLoadUrl() as boolean
289     '///<h3>Update test: Access the url-entryfield</h3>
290     '///<i>Starting point: Any plain document</i><br>
291     '///<u>Input</u>:
292     '///<ol>
293     '///+<li>Nothing</li>
294     '///</ol>
295     '///<u>Returns</u>:
296     '///<ol>
297     '///+<li>Nothing</li>
298     '///</ol>
299     '///<u>Description</u>:
300     '///<ul>
301     
303     ' this function tries to write to the url-EntryField. This should fail,
304     ' because the item is not visible. Then the item should be enabled,
305     ' written to and disabled again (no use of reset toolbar here, this is
306     ' done in another testcase
307     
308     dim iItemMenuPos as integer
309     iItemMenuPos = 1
310     
311     const ITEM_MENU_POSITION = 1
312     const CFN = "hStandardbarLoadUrl::"
313     
314     printlog( CFN & "Enter" )
316     '///+<li>Write to URL-Filed (fails: Entryfiled is not visible)</li>
317     try
318         Kontext "Standardbar"
319         URLEingabe.settext( "Should not work" )
320         warnlog( CFN & "The Load URL EntryField is visible and active" )
321     catch
322         printlog( CFN & "The Load URL EntryField is not visible. Good." )
323     endcatch
324     
325     '///+<li>add the control to the standardbar</li>
326     printlog( CFN & "activate load URL" )
327     hToggleToolbarItem( ITEM_MENU_POSITION )
328     
329     '///+<li>verify its existence by entering some text</li>
330     Kontext "Standardbar"
331     try
332         URLEingabe.settext( "Should work" )
333         printlog( CFN & "The Load URL REntryFiled is visible and active. Good." )
334     catch
335         warnlog( CFN & "Could not write to 'load url' control" )
336     endcatch
337         
338     '///+<li>remove the control from the standardbar</li>
339     printlog( CFN & "Deactivate load URL" )
340     hToggleToolbarItem( ITEM_MENU_POSITION )
341     Kontext "Standardbar"
342     
343     '///+<li>try to modify non existing object, failure expected</li>
344     try
345         Kontext "Standardbar"
346         URLEingabe.settext( "Should not work" )
347         warnlog( CFN & "The Load URL EntryField is visible and active." )
348     catch 
349         printlog( CFN & "The Load URL EntryField is not visible. Good." )
350     endcatch
351     printlog( CFN & "Exit" )
352     '///</ul>
353     
354 end function
356 '*******************************************************************************
358 function hStandardbarNewDialog()
359     
360     '///<h3>Update test: New from Template via StandardBar</h3>
361     '///<i>Starting point: Plain document</i><br>
362     '///<u>Input</u>:
363     '///<ol>
364     '///+<li>Nothing</li>
365     '///</ol>
366     '///<u>Returns</u>:
367     '///<ol>
368     '///+<li>Nothing</li>
369     '///</ol>
370     '///<u>Description</u>:
371     '///<ul>
372     
373     const CFN = "hStandardbarNewDialog::"
374     const ITEM_MENU_POSITION = 3
376     printlog( CFN & "Enter" )
378     '///+<li>Click on &quot;New from Template&quot;-button (fails, it is not visible)</li>
379     try
380         NeuDialog.Click()
381         warnlog( CFN & "The 'New from Template'-button should not be visible." )
382     catch
383         printlog( CFN & "The control is not present or active." )
384     endcatch
385     
386     '///+<li>add the control to the standardbar</li>
387     printlog( CFN & "activate New from Template button" )
388     hToggleToolbarItem( ITEM_MENU_POSITION )
390     '///+<li>click the button</li>
391     Kontext "Standardbar"
392     sleep( 1 )
393     try
394         NeuDialog.click()    
395     catch
396     endcatch
397     
398     '///+<li>handle possible dialogs (there should never be one)</li>
399     kontext "Active"
400     if ( active.exists( 1 ) ) then
401         warnlog( CFN & "Unexpected active" )
402         printlog( CFN & active.gettext() )
403         try
404             printlog( CFN & "Closing dialog" )
405             active.ok()
406         catch
407             warnlog( CFN & "Unknown dialog blocks test, now crashing" )
408         endcatch
409     endif
411     '///+<li>close the templates and samples dialog</li>
412     printlog( CFN & "Close templates and samples (cancel)" )
413     Kontext "TemplateAndDocuments"
414     if ( TemplateAndDocuments.Exists( 5 ) ) then
415         TemplateAndDocuments.cancel()
416     else
417         warnlog( CFN & "The 'Template and Documents'-dialog was not activated" )
418     endif
419    
420     '///+<li>finally remove the button from the toolbar</li>
421     printlog( CFN & "Deactivate New from Template button" )
422     hToggleToolbarItem( ITEM_MENU_POSITION )
423     Kontext "Standardbar"
424     '///</ul>
425     
426 end function
428 '*******************************************************************************
430 function hStandardbarSaveAs()
432     '///<h3>Update test: SaveAs button on StandardBar</h3>
433     '///<i>Starting point: Any plain document</i><br>
434     '///<u>Input</u>:
435     '///<ol>
436     '///+<li>Nothing</li>
437     '///</ol>
438     '///<u>Returns</u>:
439     '///<ol>
440     '///+<li>Nothing</li>
441     '///</ol>
442     '///<u>Description</u>:
443     '///<ul>
446     dim bBreakOnError as boolean
448     const ITEM_MENU_POSITION = 6
449     const CFN = "hStandardbarSaveAs::"
451     printlog( CFN & "Enter" )
453     '///+<li>Click on SaveAs (fails, item is not visible)</li>
454     try
455         SpeichernAls.Click()
456     catch
457         printlog( CFN & "The control is not present, good." )
458     endcatch
459     
460     kontext "SpeichernDlg"
461     if ( SpeichernDlg.exists( 1 ) ) then
462         warnlog( "#i46363# (?)The 'SaveAs'-button should be invisible." )
463         SpeichernDlg.cancel()
464     else
465         
466         '///+<li>Add the control to the standardbar</li>
467         printlog( CFN & "Activate 'Save As' button" )
468         hToggleToolbarItem( ITEM_MENU_POSITION )
469         
470         '///+<li>Click the button</li>
471         Kontext "Standardbar"
472         hWaitForObject( SpeichernAls , 5000 )
473         try
474             SpeichernAls.click()    
475         catch
476             warnlog( CFN & "Failed to add SaveAs button" )
477         endcatch
478     
479         '///+<li>Close the save-as dialog</li>
480         printlog( CFN & "Close Save As (cancel)" )
481         Kontext "SpeichernDlg"
482         if ( SpeichernDlg.Exists( 5 ) ) then
483             SpeichernDlg.cancel()
484         else
485             warnlog( CFN & "The 'Save As'-dialog was not activated" )
486         endif
487        
488         '///+<li>Remove the button from the toolbar</li>
489         printlog( CFN & "Deactivate 'Save as' button" )
490         hToggleToolbarItem( ITEM_MENU_POSITION )
491         
492     endif
493     
494     Kontext "Standardbar"
495     printlog( CFN & "Exit" )
496     '///</ul>
497     
498 end function