merge the formfield patch from ooo-build
[ooovba.git] / testautomation / global / tools / includes / optional / t_control_objects.inc
blob79b28ece9214c66967d9182c13eacc12c48c7414
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: t_control_objects.inc,v $
11 '* $Revision: 1.1 $
13 '* last change: $Author: jsk $ $Date: 2008-06-20 07:57:33 $
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 : Functions to manipulate controls by accessing them as objects
38 '*******************************************************************************
39 '**
40 ' #0 checkRadioButtons ' check a group of RBs where the sel. RB is given by number
41 ' #0 checkRadioButton  ' check a singe RB where the state is specified directly
42 ' #0 checkCheckbox     ' check a single checkbox
43 ' #0 setCheckBox       ' sets checkbox to status provided in reference file
44 ' #0 checkComboBox     ' compares an index to one provided in a reference-file
45 ' #0 setComboBox       ' selects an index provided by a reference file
46 ' #0 checkListBox      ' compares an index to one provided in a reference-file
47 ' #0 setListBox        ' selects an index provided by a reference file
48 ' #0 checkListItem     ' check that a listitem is correct
49 ' #1 hSetControlValue  ' Change the value of a EntryField (failsafe)
50 '**
51 '\******************************************************************************
53 function checkRadioButtons( _file as string  , sKey as string  , control1 as object  , control2 as object  , optional control3 as object  , optional control4 as object ) as integer
54     
55     '///<h3>EXPERIMENTAL: Get/Set function for some control types</h3>
56     '///<i>This is a function that allows to change the state/content of a
57     '///+ control via a configuration file. This function is experimental
58     '///+ and should not be used.<br>
59     '///+ This function checks if the correct radiobutton of a group is selected.
60     '///+ at least two radiobuttons must be provided, the third and fouth are optional.
61     '///+ The value for sKey in the reference file must be of type integer</i><br>
62     
63     dim _sItem as string
64     dim _iItem as integer
65     
66     ' lowercase sKey for comparision
67     sKey = lcase( sKey )
68     
69     ' get the reference value for sKey as string
70     _sItem = hGetFileData( _file , sKey )
71     
72     ' cast it to int
73     _iItem = val( _sItem )
74     
75     ' check which one of the up to four radiobuttons is selected.
76     select case _iItem
77         
78     case 1 :
79         if ( control1.isChecked() = true ) then
80             checkRadioButtons() = true
81             printlog( "   * Radiobutton 1 selected: ok" )
82         else
83             warnlog( "The wrong radiobutton is selected" )
84         endif
85         
86     case 2 :
87         if ( control2.isChecked() = true ) then
88             checkRadioButtons() = true
89             printlog( "   * Radiobutton 2 selected: ok" )
90         else
91             warnlog( "The wrong radiobutton is selected" )
92         endif
93         
94     case 3 :
95         if ( isMissing( control3 ) = false ) then
96             if ( control3.isChecked() = true ) then
97                 checkRadioButtons() = true
98                 printlog( "   * Radiobutton 3 selected: ok" )
99             else
100                 warnlog( "The wrong radiobutton is selected" )
101             endif
102         else
103             warnlog( "referencing to non-existing control." )
104             checkRadioButtons() = false
105         endif
106         
107     case 4 :
108         if ( isMissing( control4 ) = false ) then
109             if ( control4.isChecked() = true ) then
110                 checkRadioButtons() = true
111                 printlog( "   * Radiobutton 4 selected: ok" )
112             else
113                 warnlog( "The wrong radiobutton is selected" )
114             endif
115         else
116             warnlog( "referencing to non-existing control." )
117             checkRadioButtons() = false
118         endif
119         
120     case else
121         warnlog( "Maximum of four connected radiobuttons allowed." )
122         checkRadioButtons() = false
123     end select
124     
125 end function
127 '*******************************************************************************
129 function checkRadioButton( _file as string , sKey as string , control as object ) as boolean
130     
131     '///<h3>EXPERIMENTAL: Get/Set function for some control types</h3>
132     '///<i>This is a function that allows to change the state/content of a
133     '///+ control via a configuration file. This function is experimental
134     '///+ and should not be used.<br>
135     
136     ' a wrapper. The routine is identical to checkCheckBox.
137     
138     checkRadioButton = checkCheckBox( _file , sKey , control )
139     
140 end function
142 '*******************************************************************************
144 function checkCheckBox( _file as string , sKey as string , control as object , optional cBugID as string ) as boolean
145     
146     '///<h3>EXPERIMENTAL: Get/Set function for some control types</h3>
147     '///<i>This is a function that allows to change the state/content of a
148     '///+ control via a configuration file. This function is experimental
149     '///+ and should not be used.<br>
150     
151     dim bIsChecked as boolean
152     dim sIsChecked as string
153     dim _sIsChecked as string
154     
155     if ( ismissing( cBugID ) ) then
156         cBugID = "WriteMe!"
157     endif
158     if ( sKey = "*" ) then
159         sKey = control.name()
160     endif
161     
162     sKey = lcase( sKey )
163     _sIsChecked = lcase( hGetFileData( _file , sKey ) )
164     
165     if ( _sIsChecked <> "disabled" ) then
166         
167         ' look if the control is present on the current dialog
168         if ( control.exists() and _
169             control.IsVisible() and _
170             control.IsEnabled() ) then
171             
172             ' find out whether it is checked or not, create strings for errormessage
173             bIsChecked = control.isChecked()
174             if ( bIsChecked = true ) then
175                 sIsChecked = "checked"
176             else
177                 sIsChecked = "unchecked"
178             endif
179             
180             ' compare
181             keycompare( sIsChecked , _sIsChecked , sKey , cBugID )
182             checkCheckBox() = control.isChecked()
183             
184         else
185             
186             warnlog( "Control <" & sKey & "> could not be accessed." )
187             
188         endif
189         
190     else
191         
192         if ( control.IsEnabled() ) then
193             warnlog( "The control should be disabled but it is not: " & sKey )
194         endif
195         
196     endif
197     
198 end function
200 '*******************************************************************************
202 function setCheckBox( _file as string , sKey as string , control as object , optional bverbose as boolean ) as boolean
203     
204     '///<h3>EXPERIMENTAL: Get/Set function for some control types</h3>
205     '///<i>This is a function that allows to change the state/content of a
206     '///+ control via a configuration file. This function is experimental
207     '///+ and should not be used.<br>
208     
209     dim sIsChecked as string
210     dim _sIsChecked as string
211     
212     if ( sKey = "*" ) then
213         sKey = control.name()
214     endif
215     if ( ismissing( bverbose ) ) then
216         bverbose = true
217     endif
218     
219     sKey = lcase( sKey )
220     _sIsChecked = lcase( hGetFileData( _file , sKey ) )
221     
222     if ( _sIsChecked <> "disabled" ) then
223         
224         if ( control.exists() and _
225             control.IsVisible() and _
226             control.IsEnabled() ) then
227             
228             select case _sIsChecked
229                 
230             case "checked"
231                 control.check()
232                 setCheckBox() = true
233             case "unchecked"
234                 control.uncheck()
235                 setCheckBox() = false
236             case else
237                 warnlog( "what?" )
238                 
239             end select
240             
241             if ( bverbose ) then
242                 printlog( "     * " & sKey )
243             endif
244             
245         else
246             
247             ' warn if the control could not be used (only works in rare cases)
248             warnlog( "Control <" & sKey & "> is not accessible." )
249             
250         endif
251         
252     else
253         
254         if ( control.IsEnabled() ) then
255             warnlog( "The control should be disabled but it is not: " & sKey )
256         endif
257         
258     endif
259     
260 end function
262 '*******************************************************************************
264 function checkComboBox( _file as string , sKey as string , control as object ) as boolean
265     
266     '///<h3>EXPERIMENTAL: Get/Set function for some control types</h3>
267     '///<i>This is a function that allows to change the state/content of a
268     '///+ control via a configuration file. This function is experimental
269     '///+ and should not be used.<br>
270     
271     dim controltext as string  ' current state
272     dim _controltext as string ' reference
273     
274     if ( sKey = "*" ) then
275         sKey = control.name()
276     endif
277     
278     sKey = lcase( sKey )
279     
280     if ( control.exists() = true and control.IsVisible = true ) then
281         
282         _controltext = lcase( hGetFileData( _file , skey ) )
283         controltext = control.getSelText()
284         keycompare( controltext , _controltext , sKey )
285         checkComboBox() = control.isEnabled()
286         
287     else
288         
289         warnlog( "Control <" & sKey & "> could not be accessed." )
290         
291     endif
292     
293 end function
295 '*******************************************************************************
297 function setComboBox( _file as string , sKey as string , control as object , optional bverbose as boolean  ) as integer
298     
299     '///<h3>EXPERIMENTAL: Get/Set function for some control types</h3>
300     '///<i>This is a function that allows to change the state/content of a
301     '///+ control via a configuration file. This function is experimental
302     '///+ and should not be used.<br>
303     
304     dim _controltext as string ' reference string retrieved from _file
305     
306     if ( ismissing( bverbose ) ) then
307         bverbose = true
308     endif
309     if ( sKey = "*" ) then
310         sKey = control.name()
311     endif
312     
313     sKey = lcase( sKey )
314     
315     if ( control.exists() = true and control.IsVisible = true ) then
316         
317         _controltext = hGetFileData( _file , sKey )
318         control.settext( _controltext )
319         setComboBox() = _controltext
320         if ( bverbose = true ) then
321             printlog( "     * " & sKey )
322         endif
323         
324     else
325         
326         warnlog( "Control <" & sKey & "> is not accessible." )
327         
328     endif
329     
330 end function
332 '*******************************************************************************
334 function  checkEntryField( _file as string , sKey as string , control as object , optional cBugID as string ) as boolean
335     
336     '///<h3>EXPERIMENTAL: Get/Set function for some control types</h3>
337     '///<i>This is a function that allows to change the state/content of a
338     '///+ control via a configuration file. This function is experimental
339     '///+ and should not be used.<br>
340     
341     dim controltext as string  ' current state
342     dim _controltext as string ' reference
343     
344     if ( ismissing( cBugID ) ) then
345         cBugID = "WriteMe!"
346     endif
347     if ( sKey = "*" ) then
348         sKey = control.name()
349     endif
350     
351     ' lowercase the name (or alias) of the control which will be tested
352     sKey = lcase( sKey )
353     
354     ' get the expected setting for the control from the reference file
355     _controltext = lcase( hGetFileData( _file , skey ) )
356     
357     ' if the reference file specifies that the control should be disabled
358     ' the routine tries to access it - expecting to fail. In this case we write
359     ' a string into the EF
360     if ( _controltext <> "disabled" ) then
361         
362         if ( control.exists()  and _
363             control.IsVisible() and _
364             control.IsEnabled() ) then
365             
366             controltext = lcase( control.getText() )
367             keycompare( controltext , _controltext , sKey , cBugID )
368             checkEntryField() = control.isEnabled()
369             
370         else
371             
372             warnlog( "Control <" & sKey & "> could not be accessed." )
373             
374         endif
375         
376     else
377         
378         if ( control.IsEnabled() ) then
379             warnlog( "The control should be disabled but it is not: " & sKey )
380         endif
381         
382     endif
383     
384 end function
386 '*******************************************************************************
388 function  setEntryField( _file as string , sKey as string , control as object , optional bverbose as boolean ) as string
389     
390     '///<h3>EXPERIMENTAL: Get/Set function for some control types</h3>
391     '///<i>This is a function that allows to change the state/content of a
392     '///+ control via a configuration file. This function is experimental
393     '///+ and should not be used.<br>
394     
395     ' this is the text that will be written into the entryfield
396     dim _controltext as string
397     
398     if ( ismissing( bverbose ) ) then
399         bverbose = true
400     endif
401     if ( sKey = "*" ) then
402         sKey = lcase(  control.name() )
403     endif
404     
405     ' get the string from the reference file
406     _controltext = lcase( hGetFileData( _file , sKey ) )
407     
408     if ( _controltext <> "disabled" ) then
409         
410         ' we can only access the control if it is present + visible
411         if ( control.exists() and _
412             control.IsVisible() and _
413             control.IsEnabled() ) then
414             
415             control.setText( lcase( _controltext ) )
416             setEntryField() = _controltext
417             
418             if ( bverbose ) then
419                 printlog( "     * " & sKey )
420             endif
421             
422         else
423             
424             warnlog( "Control <" & sKey & "> is not accessible." )
425             
426         endif
427         
428     else
429         
430         if ( control.IsEnabled() ) then
431             warnlog( "The control should be disabled but it is not: " & sKey )
432         endif
433         
434     endif
435     
436 end function
438 '*******************************************************************************
440 function checkListBox( _file as string , sKey as string , control as object ) as boolean
441     
442     '///<h3>EXPERIMENTAL: Get/Set function for some control types</h3>
443     '///<i>This is a function that allows to change the state/content of a
444     '///+ control via a configuration file. This function is experimental
445     '///+ and should not be used.<br>
446     
447     dim controltext as string  ' current state
448     dim _controltext as string ' reference
449     
450     if ( sKey = "*" ) then
451         sKey = control.name()
452     endif
453     
454     sKey = lcase( sKey )
455     
456     if ( control.exists() = true and control.IsVisible = true ) then
457         
458         _controltext = lcase( hGetFileData( _file , skey ) )
459         controltext = control.getSelIndex()
460         keycompare( controltext , _controltext , sKey )
461         checkListBox() = control.isEnabled()
462         
463     else
464         
465         warnlog( "Control <" & sKey & "> could not be accessed." )
466         
467     endif
468     
469 end function
471 '*******************************************************************************
473 function setListBox( _file as string , sKey as string , control as object , optional bverbose as boolean  ) as integer
474     
475     '///<h3>EXPERIMENTAL: Get/Set function for some control types</h3>
476     '///<i>This is a function that allows to change the state/content of a
477     '///+ control via a configuration file. This function is experimental
478     '///+ and should not be used.<br>
479     
480     dim _controltext as string ' reference
481     
482     ' if name of the control is '*' get the name from the control itself
483     if ( ismissing( bverbose ) ) then
484         bverbose = true
485     endif
486     if ( sKey = "*" ) then
487         sKey = control.name()
488     endif
489     
490     ' change the key to lowercase
491     sKey = lcase( sKey )
492     
493     if ( control.exists() = true and control.IsVisible = true ) then
494         
495         _controltext = hGetFileData( _file , sKey )
496         control.select( val( _controltext ) )
497         setListBox() = control.getselindex()
498         if ( bverbose = true ) then
499             printlog( "     * " & sKey )
500         endif
501         
502     else
503         
504         warnlog( "Control <" & sKey & "> is not accessible." )
505         
506     endif
507     
508 end function
510 '*******************************************************************************
512 function checkListItem( _file as string , _iIndex as integer , sKey as string  , control as object ) as boolean
513     
514     '///<h3>EXPERIMENTAL: Get/Set function for some control types</h3>
515     '///<i>This is a function that allows to change the state/content of a
516     '///+ control via a configuration file. This function is experimental
517     '///+ and should not be used.<br>
518     
519     dim controltext as string  ' current state
520     dim _controltext as string ' reference
521     
522     sKey = lcase( sKey )
523     
524     
525     if ( control.exists() = true and control.IsVisible() = true ) then
526         
527         control.select( _iIndex )
528         controltext = control.getSelText()
529         _controltext = hGetFileData( _file , skey )
530         
531         
532         keycompare( controltext , _controltext , sKey )
533         
534         checkListItem() = control.isEnabled()
535         
536     else
537         
538         printlog( "Control <" & sKey & "> could not be found." )
539         
540     endif
541     
542     
543 end function
545 '*******************************************************************************
547 function hSetControlValue( oObject as object, cValue as string ) as integer
548     
549     '///<h3>Enter some text into a EntryField/TextField</h3>
550     '///<i>This extends .setText() to provide a returnvalue</i><br>
551     '///<i>The function runs silent as long as no errors occur</i><br>
552     '///<u>Input</u>:
553     '///<ol>
554     '///+<li>Control Object (Object)</li>
555     '///<ul>
556     '///+<li>The object must exist</li>
557     '///+<li>The object must be enabled</li>
558     '///+<li>The object must be visible</li>
559     '///</ul>
560     '///+<li>String (string)</li>
561     '///<ul>
562     '///+<li>Any string, including empty strings (=delete)</li>
563     '///</ul>
564     '///</ol>
565     '///<u>Returns</u>:
566     '///<ol>
567     '///+<li>Status of the control (integer)</li>
568     '///<ul>
569     '///+<li>0 = EntryField was updated correctly</li>
570     '///+<li>1 = Object does not exist</li>
571     '///+<li>2 = Object it not visible</li>
572     '///+<li>3 = Object is disabled</li>
573     '///</ul>
574     '///</ol>
575     '///<u>Description</u>:
576     '///<ul>
577     dim irc as integer
578     const CFN = "hSetControlValue::"
579     
580     '///+<li>Verify that the control exists</li>
581     if ( oObject.exists() ) then
582         
583         '///+<li>Verify that the object is visible</li>
584         if ( oObject.isVisible() ) then
585             
586             '///+<li>Verify that the control is enabled</li>
587             if ( oObject.isEnabled() ) then
588                 oObject.setText( cValue )
589                 irc = 0
590             else
591                 irc = 3 ' control disabled
592                 printlog( CFN & "Control is disabled: ID: " & oObject )
593             endif
594         else
595             irc = 2 ' control not visible
596             printlog( CFN & "Control is not visible: ID: " & oObject )
597         endif
598     else
599         irc = 1 ' control does not exist
600         printlog( CFN & "Control does not exist: ID: " & oObject )
601     endif
602     
603     hSetControlValue() = irc
604     '///</ul>
605     
606 end function