merge the formfield patch from ooo-build
[ooovba.git] / testautomation / framework / tools / includes / customize_tools.inc
blob8c0cbf80f1c9fcc9403f1b0dba0159d533f5a24a
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: customize_tools.inc,v $
11 '* $Revision: 1.1 $
13 '* last change: $Author: jsi $ $Date: 2008-06-16 12:19:05 $
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 : Tools to ease the use of the ToolsCustomize-Dialog
38 '\******************************************************************************
40 function hToolsCustomizeOpen() as boolean
42     '///<h3>Open Tools/Customize</h3>
43     '///<i>Starting point: Any plain document</i><br>
44     '///<u>Input</u>:
45     '///<ol>
46     '///+<li>Nothing</li>
47     '///</ol>
48     '///<u>Returns</u>:
49     '///<ol>
50     '///+<li>Errorstatus (boolean)</li>
51     '///<ul>
52     '///+<li>TRUE if the Keyboard-Tab is open</li>
53     '///+<li>FALSE on any other case</li>
54     '///</ul>
55     '///</ol>
56     '///<u>Description</u>:
57     '///<ul>
58     
59     const CFN = "hToolsCustomizeOpen::"
61     '///+<li>Open Tools/Customize using the ToolsCustomize slot</li>
62     ToolsCustomize
64     '///+<li>Switch to the Events Tab</li>
65     hToolsCustomizeSelectTab( "Events" )
66     
67     '///+<li>Verify that the requested tabpage is open</li>
68     Kontext TabCustomizeEvents
69     if ( TabCustomizeEvents.exists() ) then
70         hToolsCustomizeOpen() = true
71         printlog( CFN & "Successfully opened ToolsCustomize" )
72     else
73         hToolsCustomizeOpen() = false
74         printlog( CFN & "Failed to open ToolsCustomize" )
75     endif
76     '///+<li>Return TRUE on success</li>
77     '///</ul>
79 end function
81 '*******************************************************************************
83 function hToolsCustomizeSelectTab( cTab as string ) as boolean
85     '///<h3>Switch Tabpages on ToolsCustomize Dialog</h3>
86     '///<i>Starting point: The Tools/Customize dialog</i><br>
87     '///<u>Input</u>:
88     '///<ol>
89     '///+<li>Name of the Tab (string)</li>
90     '///<ul>
91     '///+<li>&quot;Keyboard&quot;</li>
92     '///+<li>&quot;Menu&quot;</li>
93     '///+<li>&quot;Toolbars&quot;</li>
94     '///+<li>&quot;Events&quot;</li>
95     '///</ul>
96     '///</ol>
97     '///<u>Returns</u>:
98     '///<ol>
99     '///+<li>Errorstatus (boolean)</li>
100     '///<ul>
101     '///+<li>TRUE if the requested tab is open</li>
102     '///+<li>FALSE on any other condition</li>
103     '///</ul>
104     '///</ol>
105     '///<u>Description</u>:
106     '///<ul>
107     
108     const CFN = "hToolsCustomizeSelectTab::"
109     dim brc as boolean
110         brc = false
112     ctab = lcase( ctab )
114     '///+<li>Switch to one of the four available tabpages</li>
115     '///<ol>
116     kontext
117     active.setPage
119     kontext
120     
121     try
123         select case ctab
124         '///+<li>Keyboard</li>
125         case "keyboard"    : active.setPage TabTastatur 
126                              kontext "TabTastatur"
127                              if ( Aendern.isVisible() ) then
128                                  brc = true
129                              endif
130         '///+<li>Menu</li>
131         case "menu"        : active.setPage TabCustomizeMenu 
132                              kontext "TabCustomizeMenu"
133                              if ( Entries.isVisible() ) then
134                                  brc = true
135                              endif
136         '///+<li>Toolbars</li>
137         case "toolbars"    : active.setPage TabCustomizeToolbars 
138                              kontext "TabCustomizeToolbars"
139                              if ( ToolbarContents.isVisible() ) then
140                                  brc = true
141                              endif
142         '///+<li>Events</li>
143         case "events"      : active.setPage TabCustomizeEvents 
144                              kontext "TabCustomizeEvents"
145                              if ( AssignMacro.isVisible() ) then
146                                  brc = true
147                              endif 
148         end select
149         '///</ol>
150         
151     catch
152     
153         printlog( CFN & "Could not access requested tabpage" )
154         brc = false
155         
156     endcatch
158     if ( brc ) then
159         printlog( CFN & "Opened Tab: " & cTab )
160     else
161         printlog( CFN & "Failed to open Tab: " & cTab )
162     endif
163     
164     '///+<li>Return TRUE on success</li>
165     '///</ul>
166     hToolsCustomizeSelectTab() = brc
167     
168 end function
170 '*******************************************************************************
172 function hToolsCustomizeClose( iMode as integer  ) as boolean
174     '///<h3>Close the ToolsCustomize-Dialog</h3>
175     '///<i>Starting point: Tools/Customize dialog</i><br>
176     '///<u>Input</u>:
177     '///<ol>
178     '///+<li>Closing mode (integer)</li>
179     '///<ul>
180     '///+<li>1: Use OK-button</li>
181     '///+<li>2: Use Cancel-button</li>
182     '///</ul>
183     '///</ol>
184     '///<u>Returns</u>:
185     '///<ol>
186     '///+<li>Errorstatus (boolean)</li>
187     '///<ul>
188     '///+<li>TRUE if executing close action succeeded</li>
189     '///+<li>FALSE on any other condition</li>
190     '///</ul>
191     '///</ol>
192     '///<u>Description</u>:
193     '///<ul>
194     
195     const CFN = "hToolsCustomizeClose::"
196     dim brc as boolean
197         brc = true
199     kontext 
201     '///+<li>Switch to the Events page by default</li>
202     active.setPage( TabCustomizeEvents )
203     
204     '///+<li>Close dialog by OK or CANCEL</li>
205     '///<ol>
206     select case iMode
207     '///+<li>OK</li>
208     case 1 : TabCustomizeEvents.OK()
209     '///+<li>Cancel</li>
210     case 2 : TabCustomizeEvents.Cancel()
211     case else
212         brc = false
213     end select
214     '///</ol>
215     
216     '///+<li>Verify that the dialog has indeed been closed</li>
217     kontext "TabCustomizeEvents"
218     if ( TabCustomizeEvents.exists() ) then
219         brc = false
220     endif
222     if ( brc ) then
223         printlog( CFN & "Closed Tools/Customize" )
224     else
225         printlog( CFN & "Failed to close Tools/Customize" )
226     endif
228     '///</ul>
229     hToolsCustomizeClose() = brc
230 end function
232 '*******************************************************************************
234 function hToolsCustomizeAddNewMenu( cName as string, bMode as boolean ) as boolean
236     '///<h3>Add a new menu via Tools/Customize/Menu</h3>
237     '///<i>Starting point: Tools/Customize with Menu-Tab open</i><br>
238     '///<u>Input</u>:
239     '///<ol>
240     '///+<li>Name of the new menu (string)</li>
241     '///+<li>Mode (boolean). Options:</li>
242     '///<ul>
243     '///+<li>TRUE = The entry will be created (OK)</li>
244     '///+<li>FALSE = The entry will not be created (Cancel)</li>
245     '///</ul>
246     '///</ol>
247     '///<u>Returns</u>:
248     '///<ol>
249     '///+<li>Errorstatus (boolean)</li>
250     '///<ul>
251     '///+<li>TRUE on success</li>
252     '///+<li>FALSE on failure</li>
253     '///</ul>
254     '///</ol>
255     '///<u>Description</u>:
256     '///<ul>
257     
258     const CFN = "hToolsCustomizeAddNewMenu::"
259     dim brc as boolean
260         brc = false
261     
262     '///+<li>Click the &quot;New...&quot; button</li>
263     kontext "TabCustomizeMenu"
264     BtnNew.click()
265     
266     '///+<li>Verify that the menu organizer exists</li>
267     Kontext "MenuOrganiser"
268     if ( not MenuName.exists() ) then
269         printlog( CFN & "MenuOrganiser is not open" )
270         exit function
271     endif
272     
273     '///+<li>Name the new menu if we intend to create the new entry</li>
274     if ( bMode ) then
275         printlog( CFN & "Naming menu: " & cName )
276         MenuName.setText( cName )
277         MenuOrganiser.OK()
278         brc = true
279     else
280         call DialogTest( MenuOrganiser )
281         printlog( CFN & "Opened and closed MenuOrganiser" )
282         MenuOrganiser.cancel()
283         brc = true
284     endif
285     
286     hToolsCustomizeAddNewMenu() = brc
287     '///</ul>
289 end function
291 '*******************************************************************************
293 function hDeselectSeparator() as integer
295     '///<h3>Make sure that we do not work on a separator item (Toolbars)</h3>
296     '///<i>Starting point: Tools/Customize: Toolbars must be open</i><br>
297     '///<u>Input</u>:
298     '///<ol>
299     '///+<li>Nothing</li>
300     '///</ol>
301     '///<u>Returns</u>:
302     '///<ol>
303     '///+<li>Position of the selected item (integer)</li>
304     '///<ul>
305     '///+<li>Always &gt; 1</li>
306     '///+<li>Always &lt; Max number of items</li>
307     '///</ul>
308     '///</ol>
309     '///<u>Description</u>:
310     '///<ul>
311     
313     dim iCurrentItem as integer
314     dim cString as string
315     dim irc as integer
316     const CFN = "hDeselectSeparator::"
317     
318     kontext "ToolsCustomizeToolbars"
319     if ( ToolbarContents.getItemCount > 0 ) then
320     
321         iCurrentItem = ToolbarContents.getSelIndex()
322         cString = ToolbarContents.getSelText()
323         
324         '///+<li>Check whether the selected item contains a number of minus-chars (---)</li>
325         if ( instr( cString , "----" ) ) then
326         
327             '///+<li>If we are at the beginning of the list: Move up</li>
328             if ( iCurrentItem = 1 ) then
329                 irc = 2
330                 ToolbarContents.select( irc )
331                 printlog( CFN & " Moved away from separator (up)" )
332             else
333             '///+<li>If we are somewhere else in the list, move down</li>
334                 irc = iCurrentItem - 1
335                 ToolbarContents.select( irc )
336                 printlog( CFN & " Moved away from separator (down)" )
337             endif
338             
339         endif
340     else
341         irc = 0
342     endif
343     
344     hDeselectSeparator() = irc
345     '///</ul>
346     
347 end function
349 '*******************************************************************************