[ooo-build-commit] Branch 'ooo/master' - 4 commits - qadevOOo/runner testautomation/dbaccess testautomation/global testautomation/graphics

Jan Holesovsky kendy at kemper.freedesktop.org
Fri Jul 3 19:32:54 PDT 2009


 qadevOOo/runner/base/java_complex.java                        |   81 
 qadevOOo/runner/complexlib/ComplexTestCase.java               |  133 -
 qadevOOo/runner/graphical/IniFile.java                        |   19 
 qadevOOo/runner/graphical/JPEGComparator.java                 |    3 
 qadevOOo/runner/helper/CfgParser.java                         |  140 -
 qadevOOo/runner/helper/ClParser.java                          |   79 
 qadevOOo/runner/helper/ComplexDescGetter.java                 |  119 -
 qadevOOo/runner/helper/OfficeProvider.java                    |  403 ++-
 qadevOOo/runner/helper/ProcessHandler.java                    |  340 ++-
 qadevOOo/runner/lib/TestParameters.java                       |    7 
 qadevOOo/runner/org/openoffice/Runner.java                    |  186 +
 qadevOOo/runner/util/DesktopTools.java                        |    8 
 qadevOOo/runner/util/PropertyName.java                        |    3 
 testautomation/dbaccess/optional/includes/ctrl_Wizards.inc    |   47 
 testautomation/dbaccess/optional/includes/db_IndexDesign.inc  |    2 
 testautomation/dbaccess/optional/includes/db_Text.inc         |    6 
 testautomation/dbaccess/required/includes/DatabaseTypes.inc   |   30 
 testautomation/dbaccess/required/input/sun-report-builder.oxt |binary
 testautomation/dbaccess/tools/controltools.inc                |    5 
 testautomation/dbaccess/tools/dbcreatetools.inc               |  229 +-
 testautomation/global/tools/includes/required/t_doc2.inc      |    6 
 testautomation/graphics/required/includes/global/id_004.inc   |  491 ++--
 testautomation/graphics/required/includes/global/id_005.inc   | 1111 ++++------
 23 files changed, 2020 insertions(+), 1428 deletions(-)

New commits:
commit 00fe3e7dd28278f4147d0abd0386f6b4ee3efd29
Author: Release Engineers <releng at openoffice.org>
Date:   Fri Jul 3 15:23:42 2009 +0000

    CWS-TOOLING: integrate CWS automationdev300m49cat3b
    2009-06-11 16:02:30 +0200 wg  r272877 : i102646
    2009-06-11 16:02:15 +0200 wg  r272876 : i102642
    2009-06-10 15:29:43 +0200 hde  r272821 : i102610
    2009-06-10 15:27:23 +0200 wg  r272819 : i102646
    2009-06-10 14:34:59 +0200 wg  r272813 : i102642
    2009-06-10 14:30:44 +0200 wg  r272811 : i102642

diff --git a/testautomation/global/tools/includes/required/t_doc2.inc b/testautomation/global/tools/includes/required/t_doc2.inc
index 8645944..f4dc3bb 100755
--- a/testautomation/global/tools/includes/required/t_doc2.inc
+++ b/testautomation/global/tools/includes/required/t_doc2.inc
@@ -57,7 +57,7 @@ sub hTabelleEinfuegen
         TextObjectbar.SetNextToolBox
     end if
 
-    Select Case gApplication
+    select case uCASE(gApplication)
     Case "WRITER"
         Kontext "DocumentWriter"
     Case "MASTERDOCUMENT"
@@ -189,7 +189,7 @@ function fSelectFirstOLE() as integer
 
     fSelectFirstOLE = -1
 
-    select case gApplication
+    select case uCASE(gApplication)
     case "CALC"                     :   Kontext "NavigatorCalc"
         'First check if Navigator is visible and remember result
         if NavigatorCalc.exists (10) then
@@ -252,7 +252,7 @@ function fSelectFirstOLE() as integer
         end if
 
     case "WRITER" , "HTML" , "MASTERDOCUMENT" :
-        select case gApplication
+        select case uCASE(gApplication)
         case "MASTERDOCUMENT"    :   Kontext "NavigatorGlobalDoc"
             if NavigatorGlobalDoc.Exists(10) then
                 bNavigatorWasVisible = TRUE
diff --git a/testautomation/graphics/required/includes/global/id_004.inc b/testautomation/graphics/required/includes/global/id_004.inc
index 6db5955..7de9ff4 100755
--- a/testautomation/graphics/required/includes/global/id_004.inc
+++ b/testautomation/graphics/required/includes/global/id_004.inc
@@ -55,236 +55,248 @@
 ' #1 tiInsertSnappointLine
 ' #1 tdInsertLayer
 '\**********************************************************************************
-
-'///      Dateiname.settext Convertpath (gTesttoolPath + "global\input\graf_inp\stabler.tif") ///'
-
 testcase tiInsertSlide
 
-    '/// open application ///'
+    printlog "Dateiname.settext Convertpath (gTesttoolPath + global\input\graf_inp\stabler.tif) "
+    printlog "open application"
     Call  hNewDocument
-    '/// Insert->Slide ///'
+    printlog "Insert->Slide"
     InsertSlide
     WaitSlot (2000)
     hTypekeys "<Pagedown>"
     WaitSlot (2000) 'sleep 2
-    '/// close application ///'
+    printlog "close application"
     Call  hCloseDocument
-endcase
-
+    
+endcase 'tiInsertSlide
+'--------------------------------------------------------
 testcase tiInsertDuplicateSlide
-    '/// open application ///'
+
+    printlog "open application"
     Call hNewDocument
-    '/// create rectangle ///'
+    printlog "create rectangle"
     Call hRechteckErstellen ( 30, 40, 40, 50 )
-    '/// Insert->Duplicate Slide ///'
+    printlog "Insert->Duplicate Slide"
     InsertDuplicateSlide
     WaitSlot (2000)
-    '/// close application ///'
+    printlog "close application"
     Call  hCloseDocument
-endcase
-
+    
+endcase 'tiInsertDuplicateSlide
+'--------------------------------------------------------
 testcase tiInsertField
-    '/// open application ///'
+
+    printlog "open application"
     Call hNewDocument
 
-    '/// Insert->Fields->Time (fixed) ///'
+    printlog "Insert->Fields->Time (fixed)"
     InsertFieldsTimeFix
     WaitSlot (1000)
     printlog "OK   Time Fix"
-    '/// delete it with EditSelectAll + <Delete> ///'
+    printlog "delete it with EditSelectAll + <Delete> "
     EditSelectAll
     hTypekeys "<Delete>"
     sleep 1
 
-    '/// Insert->Fields->Date (fixed) ///'
+    printlog "Insert->Fields->Date (fixed) "
     InsertFieldsDateFix
     WaitSlot (1000)
     printlog "OK   Date Fix"
-    '/// delete it with EditSelectAll + <Delete> ///'
+    printlog "delete it with EditSelectAll + <Delete> "
     EditSelectAll
     hTypekeys "<Delete>"
     sleep 1
 
-    '/// Insert->Fields->Time (variable) ///'
+    printlog "Insert->Fields->Time (variable) "
     InsertFieldsTimeVariable
     WaitSlot (1000)
     printlog "OK   Time Variabel"
-    '/// delete it with EditSelectAll + <Delete> ///'
+    printlog "delete it with EditSelectAll + <Delete> "
     EditSelectAll
     hTypekeys "<Delete>"
     sleep 1
 
-    '/// Insert->Fields->Date (variable) ///'
+    printlog "Insert->Fields->Date (variable) "
     InsertFieldsDateVariable
     WaitSlot (1000)
     printlog "OK   Date Variabel"
-    '/// delete it with EditSelectAll + <Delete> ///'
+    printlog "delete it with EditSelectAll + <Delete> "
     EditSelectAll
     hTypekeys "<Delete>"
     sleep 1
 
-    '/// Insert->Fields->Author ///'
+    printlog "Insert->Fields->Author "
     InsertFieldsAuthorDraw
     WaitSlot (1000)
     printlog "OK   Author"
-    '/// delete it with EditSelectAll + <Delete> ///'
+    printlog "delete it with EditSelectAll + <Delete> "
     EditSelectAll
     hTypekeys "<Delete>"
     sleep 1
 
-    '/// Insert->Fields->Page Numbers///'
+    printlog "Insert->Fields->Page Numbers"
     InsertFieldsPageNumberDraw
     WaitSlot (1000)
     printlog "OK   Page number"
-    '/// delete it with EditSelectAll + <Delete> ///'
+    printlog "delete it with EditSelectAll + <Delete> "
     EditSelectAll
     hTypekeys "<Delete>"
     sleep 1
 
-    '/// Insert->Fields->Filename ///'
+    printlog "Insert->Fields->Filename "
     InsertFieldsFileName
     WaitSlot (1000) 'sleep 1
     printlog "OK   File name"
-    '/// delete it with EditSelectAll + <Delete> ///'
+    printlog "delete it with EditSelectAll + <Delete> "
     EditSelectAll
     hTypekeys "<Delete>"
     sleep 2
-    '/// close application ///'
+    printlog "close application "
     Call  hCloseDocument
-endcase
-
+    
+endcase 'tiInsertField
+'--------------------------------------------------------
 testcase tiInsertSpecialCharacter
-    '/// open application ///'
+
+    printlog "open application "
     Call hNewDocument
 
-    '/// insert text ///'
+    printlog "insert text "
     hTextrahmenErstellen ("This is a testtext",30,40,60,50)
     sleep 2
-    '/// Insert->SpecialCharacter ///'
+    printlog "Insert->SpecialCharacter "
     InsertSpecialCharacterDraw
     WaitSlot (2000)
     Kontext "Sonderzeichen"
-        Call DialogTest (Sonderzeichen)
-        '/// cancel dialog 'Special Characters' ///'
-        Sonderzeichen.Cancel
-        sleep 2
-    '/// close application ///'
+    Call DialogTest (Sonderzeichen)
+    printlog "cancel dialog 'Special Characters' "
+    Sonderzeichen.Cancel
+    sleep 2
+    printlog "close application "
     Call hCloseDocument
-endcase
-
+    
+endcase 'tiInsertSpecialCharacter
+'--------------------------------------------------------
 testcase tiInsertHyperlink
-    '/// open application ///'
+
+    printlog "open application "
     Call hNewDocument
-    '/// Insert->Hyperlink ///'
+    printlog "Insert->Hyperlink "
     InsertHyperlink
     WaitSlot (5000)
     Kontext "Hyperlink"
-        if Hyperlink.exists (5) then
-            Auswahl.MouseDown 50, 5
-            Auswahl.MouseUp 50, 5
-            Auswahl.typekeys "<PAGEDOWN><PAGEUP>"
-            Auswahl.typekeys "<TAB>"
-            sleep 3
-            Kontext "TabHyperlinkInternet"
-
-            'Workaround to get rid of a Focusing-problem...
-            NameText.Typekeys "alal <RETURN>"
-            NameText.Typekeys "<MOD1 A><DELETE>"
-            TabHyperlinkInternet.Typekeys "<TAB>", 6
-            TabHyperlinkInternet.Typekeys "<LEFT>", 3
-            'End of workaround...
-
-            Internet.Check
-            ZielUrl.Settext "http://mahler"
-            Kontext "Hyperlink"
-                Uebernehmen.Click
-                Hyperlink.Close
-        else
-            warnlog "Failed to open hyperlink ??!!"
-        end if
-    '/// close application ///'
+    if Hyperlink.exists (5) then
+        Auswahl.MouseDown 50, 5
+        Auswahl.MouseUp 50, 5
+        Auswahl.typekeys "<PAGEDOWN><PAGEUP>"
+        Auswahl.typekeys "<TAB>"
+        sleep 3
+        Kontext "TabHyperlinkInternet"
+
+        printlog "Workaround to get rid of a Focusing-problem..."
+        NameText.Typekeys "alal <RETURN>"
+        NameText.Typekeys "<MOD1 A><DELETE>"
+        TabHyperlinkInternet.Typekeys "<TAB>", 6
+        TabHyperlinkInternet.Typekeys "<LEFT>", 3
+        printlog "End of workaround..."
+
+        Internet.Check
+        ZielUrl.Settext "http://mahler"
+        Kontext "Hyperlink"
+        Uebernehmen.Click
+        Hyperlink.Close
+    else
+        warnlog "Failed to open hyperlink ??!!"
+    end if
+    printlog "close application "
     Call hCloseDocument
-endcase
-
+    
+endcase 'tiInsertHyperlink
+'--------------------------------------------------------
 testcase tiInsertGraphic
-    '/// open application ///'
+
+    printlog "open application "
     Call  hNewDocument
-    '/// Insert->Graphics ///'
+    printlog "Insert->Graphics "
     InsertGraphicsFromFile
     WaitSlot (2000) '
     try
         Kontext "GrafikEinfuegenDlg"
-            '/// if checkbox 'link' is available, check it; if not available: ERROR ///'
-            if Link.exists then
-                Link.Check
-                else
-                Warnlog  "Linking grafik doesn't work :-("
-            end if
-            '/// if checkbox 'Preview' is available, check it; if not available: ERROR ///'
-            if Preview.exists then
-                Preview.Check
+        printlog "if checkbox 'link' is available, check it; if not available: ERROR "
+        if Link.exists then
+            Link.Check
             else
-                Warnlog "Preview of graphic doesn't work :-("
-            end if
-            DialogTest (GrafikEinfuegenDlg)
-
-            '/// use file: "global\input\graf_inp\stabler.tif") ///'
-            Dateiname.settext Convertpath (gTesttoolPath + "global\input\graf_inp\stabler.tif")
-            '/// click 'open' ///'
-            Oeffnen.click
+            Warnlog  "Linking grafik doesn't work :-("
+        end if
+        printlog "if checkbox 'Preview' is available, check it; if not available: ERROR "
+        if Preview.exists then
+            Preview.Check
+        else
+            Warnlog "Preview of graphic doesn't work :-("
+        end if
+        DialogTest (GrafikEinfuegenDlg)
+        printlog " use file: global\input\graf_inp\stabler.tif) "
+        Dateiname.settext Convertpath (gTesttoolPath + "global\input\graf_inp\stabler.tif")
+        printlog "click 'open' "
+        Oeffnen.click
     catch
         Warnlog "Insert graphic doesn't work :-("
     endcatch
 
-    '/// close application ///'
+    printlog "close application "
     Call hCloseDocument
-endcase
-
+    
+endcase 'tiInsertGraphic
+'--------------------------------------------------------
 testcase tiInsertObjectSound
+
     goto endsub ' disabled for final, because always wrong (TZ 01/2002)
     'TODO: TBO: enhance!
-    '/// open application ///'
+    printlog "open application "
     Call hNewDocument
     try
-        '/// Insert->Object->Sound ///'
+        printlog " Insert->Object->Sound "
         InsertObjectSound
         WaitSlot (1000)
         Kontext "OeffnenDlg"
-            '       Call Dialogtest (OeffnenDlg) ' just be sure to check one pth and one open dialog : TZ 28.11.201
-
-            '/// cancel file open dialog ///'
-            OeffnenDlg.Cancel
+        'Call Dialogtest (OeffnenDlg) ' just be sure to check one pth and one open dialog : TZ 28.11.201
+        printlog "cancel file open dialog "
+        OeffnenDlg.Cancel
     catch
         printlog "'Insert -> Object -> Sound' not available. TestDevelopmentInProgress (TDIP) ;-)"
     endcatch
-    '/// close application ///'
+    printlog "close application "
     Call hCloseDocument
-endcase
-
+    
+endcase 'tiInsertObjectSound
+'--------------------------------------------------------
 testcase tiInsertObjectVideo
+
     goto endsub
     'TODO: TBO: enhance!
-    '/// open application ///'
+    printlog " open application "
     Call hNewDocument
     try
-        '/// Insert->Object->Video ///'
+        printlog "Insert->Object->Video "
         InsertObjectVideo
         Kontext "OeffnenDlg"
-            '      Call Dialogtest (OeffnenDlg)
-            WaitSlot (1000)
-            '/// cancel file open dialog ///'
-            OeffnenDlg.Cancel
+        'Call Dialogtest (OeffnenDlg)
+        WaitSlot (1000)
+        printlog "cancel file open dialog "
+        OeffnenDlg.Cancel
     catch
         printlog "'Insert -> Object -> Video' not available. (TDIP) ;-)"
     endcatch
-    '/// close application ///'
+    printlog "close application "
     Call hCloseDocument
-endcase
-
+    
+endcase 'tiInsertObjectVideo
+'--------------------------------------------------------
 testcase tiInsertChart
-    '/// open application ///'
+
+    printlog "open application "
     Call hNewDocument
-    '/// Insert->Chart ///'
+    printlog "Insert->Chart "
     InsertChart
     WaitSlot (2000)
     Kontext "Messagebox"
@@ -295,45 +307,49 @@ testcase tiInsertChart
         end if
     gMouseClick 1,1
     sleep 2
-    '/// close application ///'
+    printlog "close application "
     Call hCloseDocument
-endcase
-
+    
+endcase 'tiInsertChart
+'--------------------------------------------------------
 testcase tiInsertObjectOLEObjects
-    '/// open application ///'
+
+    printlog "open application "
     hNewDocument
-    '/// Insert->Object->OLEObjekts ///'
+    printlog "Insert->Object->OLEObjekts "
     InsertObjectOLEObject
     Kontext "OLEObjektEinfuegen"
-        '   Call Dialogtest ( OLEObjektEinfuegen )
-        '   NeuErstellen.Check ' is default value
-        Call DialogTest (OLEObjektEinfuegen, 1)
-        '/// check 'Create from file' ///'
-        AusDateiErstellen.Check
-        Call DialogTest (OLEObjektEinfuegen, 2)
-        '/// click 'Search...' ///'
-        Durchsuchen.click
-        Kontext "OeffnenDlG"
-            '/// cancel file open dialog ///'
-            OeffnenDLG.Cancel
+    'Call Dialogtest ( OLEObjektEinfuegen )
+    'NeuErstellen.Check ' is default value
+    Call DialogTest (OLEObjektEinfuegen, 1)
+    printlog "check 'Create from file' "
+    AusDateiErstellen.Check
+    Call DialogTest (OLEObjektEinfuegen, 2)
+    printlog "click 'Search...' "
+    Durchsuchen.click
+    Kontext "OeffnenDlG"
+    printlog "cancel file open dialog "
+    OeffnenDLG.Cancel
     Kontext "OLEObjektEinfuegen"
-        '/// cancel dialog 'insert OLE Object' ///'
-        OLEObjektEinfuegen.Cancel
-        sleep 1
-    '/// close application ///'
+    printlog "cancel dialog 'insert OLE Object' "
+    OLEObjektEinfuegen.Cancel
+    sleep 1
+    printlog "close application "
     Call hCloseDocument
-endcase
-
+    
+endcase 'tiInsertObjectOLEObjects
+'--------------------------------------------------------
 testcase tiInsertSpreadsheet
+
     if gtSYSName = "Linux" then
         printlog "Linux = wont test tiInsertSpreadsheet"
-    goto endsub
-endif
+        goto endsub
+    endif
 
-'/// open application ///'
+    printlog "open application "
     Call hNewDocument
     WaitSlot (2000)
-    '/// Insert->Spreadsheet ///'
+    printlog "Insert->Spreadsheet "
     InsertSpreadsheetDraw
     WaitSlot (2000)
     Kontext "Messagebox"
@@ -342,151 +358,166 @@ endif
             Messagebox.OK
         end if
         sleep 2
-        '/// click somewhere out of the object, to deselect it ///'
+        printlog "click somewhere out of the object, to deselect it "
         gMouseClick 1,1
         sleep 1
-        '/// select and delete object with keys: <Tab><Delete> ///'
+        printlog "select and delete object with keys: <Tab><Delete> "
         hTypekeys "<Tab><Delete>"
         sleep 2
-    '/// close application ///'
+    printlog "close application "
     Call hCloseDocument
-endcase
-
+    
+endcase 'tiInsertSpreadsheet
+'--------------------------------------------------------
 testcase tiInsertFormula
-    '/// open application ///'
+
+    printlog "open application "
     Call hNewDocument
-    '/// Insert->Object->Formula ///'
+    printlog "Insert->Object->Formula "
     InsertObjectFormulaDraw
     WaitSlot (2000)
     Kontext "Messagebox"
-        if Messagebox.Exists then
-            Warnlog Messagebox.GetText
-            Messagebox.OK
-            sleep 1
-        end if
-        '/// click somewhere out of the object, to deselect it ///'
-        gMouseClick 1,1
+    if Messagebox.Exists then
+        Warnlog Messagebox.GetText
+        Messagebox.OK
         sleep 1
-        '/// select and delete object with keys: <Tab><Delete> ///'
-        hTypekeys "<Tab><Delete>"
-    '/// close application ///'
+    end if
+    printlog "click somewhere out of the object, to deselect it "
+    gMouseClick 1,1
+    sleep 1
+    printlog "select and delete object with keys: <Tab><Delete> "
+    hTypekeys "<Tab><Delete>"
+    printlog "close application "
     Call hCloseDocument
-endcase
-
+    
+endcase 'tiInsertFormula
+'--------------------------------------------------------
 testcase tiInsertFloatingFrame
-    '/// open application ///'
+
+    printlog "open application "
     Call hNewDocument
-    '/// Insert->Floating Frame ///'
+    printlog "Insert->Floating Frame "
     InsertFloatingFrame
     WaitSlot (2000)
     Kontext "TabEigenschaften"
-        Dialogtest (TabEigenschaften)
-        '/// click '...' ///'
-        Oeffnen.Click
-        Kontext "OeffnenDlg"
-            sleep 1
-            '/// cancel file open dialog ///'
-            OeffnenDlg.Cancel
+    Dialogtest (TabEigenschaften)
+    printlog "click '...' "
+    Oeffnen.Click
+    Kontext "OeffnenDlg"
+    sleep 1
+    printlog "cancel file open dialog "
+    OeffnenDlg.Cancel
     Kontext "TabEigenschaften"
-        '/// cancel dialog 'Floating Frame Properties' ///'
-        TabEigenschaften.Cancel
-    '/// close application ///'
+    printlog "cancel dialog 'Floating Frame Properties' "
+    TabEigenschaften.Cancel
+    printlog "close application "
     Call hCloseDocument
-endcase
-
+    
+endcase 'tiInsertFloatingFrame
+'--------------------------------------------------------
 testcase tiInsertFile
-    '/// open application ///'
+
+    printlog "open application "
     Call  hNewDocument
     WaitSlot (1000)
-    '/// Insert->File ///'
+    printlog "Insert->File "
     InsertFileDraw
     WaitSlot (1000)
     Kontext "OeffnenDLG"
-        '   	Call Dialogtest ( OeffnenDLG )
-        '/// cancel file open dialog ///'
-        OeffnenDLG.Cancel
-    '/// close application ///'
+    'Call Dialogtest ( OeffnenDLG )
+    printlog "cancel file open dialog "
+    OeffnenDLG.Cancel
+    printlog "close application "
     Call  hCloseDocument
-endcase
-
+    
+endcase 'tiInsertFile
+'--------------------------------------------------------
 testcase tiInsertPlugin
-    '/// open application ///'
+
+    printlog "open application "
     call hNewDocument
-    '/// Insert->Object->PlugIn ///'
+    printlog "Insert->Object->PlugIn "
     InsertObjectPlugIn
     Kontext "PluginEinfuegen"
-        if PluginEinfuegen.exists (5) then
-            call Dialogtest (PluginEinfuegen)
-            '/// click 'browse' ///'
-            Durchsuchen.Click
+    if PluginEinfuegen.exists (5) then
+        call Dialogtest (PluginEinfuegen)
+        printlog "click 'browse' "
+        Durchsuchen.Click
+        sleep 1
+        Kontext "Messagebox"
+        if Messagebox.Exists (5) Then
+            Warnlog Messagebox.GetText
+            Messagebox.OK
+        else
+            printlog "No Messagebox :-)"
+        end if
+        Kontext "OeffnenDlG"
+        if OeffnenDlG.exists (5) then
             sleep 1
-            Kontext "Messagebox"
-                if Messagebox.Exists (5) Then
-                    Warnlog Messagebox.GetText
-                    Messagebox.OK
-                else
-                    printlog "No Messagebox :-)"
-                end if
-            Kontext "OeffnenDlG"
-                if OeffnenDlG.exists (5) then
-                    sleep 1
-                    '/// cancel file open dialog ///'
-                    OeffnenDLG.Cancel
-                end if
+            printlog "cancel file open dialog "
+            OeffnenDLG.Cancel
+        end if
     Kontext "PluginEinfuegen"
-        '/// cancel dialog 'Insert Plug-in' ///'
-        if PluginEinfuegen.exists (5) then PluginEinfuegen.Cancel
+    printlog "cancel dialog 'Insert Plug-in' "
+    if PluginEinfuegen.exists (5) then PluginEinfuegen.Cancel
         else
-            warnlog "Insert Plugin does not work :-("
-        end if
-    '/// close application ///'
+        warnlog "Insert Plugin does not work :-("
+    end if
+    printlog "close application "
     Call hCloseDocument
-endcase
-
+    
+endcase 'tiInsertPlugin
+'--------------------------------------------------------
 testcase tiInsertScan
+
     goto endsub
-    '/// DISABLED because not able to make automatic :-( ///'
-    '/// open application ///'
+    printlog "DISABLED because not able to make automatic :-( "
+    printlog "open application "
     Call hNewDocument
-    '/// Insert->Scan->Request ///'
+    printlog "Insert->Scan->Request "
     InsertScanRequest ' as long as there is no scanner available, nothing happens
     WaitSlot (1000)
-    '/// Insert->Scan->SelectSource ///'
+    printlog " Insert->Scan->SelectSource "
     InsertScanSelectSource
     WaitSlot (1000)
     printlog "Not testable, not translatable, just callable, because of systemdialog :-("
-    '/// close application ///'
+    printlog "close application "
     Call hCloseDocument
-endcase
-
+    
+endcase 'tiInsertScan
+'--------------------------------------------------------
 testcase tiInsertSnappointLine
-    '/// open application ///'
+
+    printlog "open application "
     Call  hNewDocument
-    '/// DRAW   : Insert->Snap Point/Line  ///'
-    '/// + IMPRESS: available via Kontext menu: Insert->Snap Point/Line  ///'
+    printlog "DRAW  : Insert->Snap Point/Line  "
+    printlog "+ IMPRESS: available via Kontext menu: Insert->Snap Point/Line  "
     InsertSnapPointLine
     Kontext "NeuesFangobjekt"
-        DialogTest ( NeuesFangobjekt )
-        '/// Cancel dialog 'New Snap Object' ///'
-        NeuesFangobjekt.Cancel
-        sleep 2
-    '/// close application ///'
+    DialogTest ( NeuesFangobjekt )
+    printlog "Cancel dialog 'New Snap Object' "
+    NeuesFangobjekt.Cancel
+    sleep 2
+    printlog "close application "
     Call  hCloseDocument
-endcase
-
+    
+endcase 'tiInsertSnappointLine
+'--------------------------------------------------------
 testcase tdInsertLayer
-    '/// open application ///'
+
+    printlog "open application "
     Call  hNewDocument
     WaitSlot (1000)
-    '/// View->Layer ///'
+    printlog "View->Layer "
     ViewLayer
-    '/// Insert->Layer ///'
+    printlog "Insert->Layer "
     InsertLayer
     Kontext "EbeneEinfuegenDlg"
-        DialogTest ( EbeneEinfuegenDlg )
-        '/// cancel dialog 'Insert Layer' ///'
-        EbeneEinfuegenDlg.Cancel
-    '/// close application ///'
+    DialogTest ( EbeneEinfuegenDlg )
+    printlog "cancel dialog 'Insert Layer' "
+    EbeneEinfuegenDlg.Cancel
+    printlog "close application "
     Call  hCloseDocument
-endcase
+    
+endcase 'tdInsertLayer
 
diff --git a/testautomation/graphics/required/includes/global/id_005.inc b/testautomation/graphics/required/includes/global/id_005.inc
index 0a7235f..355f94c 100755
--- a/testautomation/graphics/required/includes/global/id_005.inc
+++ b/testautomation/graphics/required/includes/global/id_005.inc
@@ -56,748 +56,743 @@
 ' #1 tiFormatGroup
 ' #1 hWalkTheStyles
 '\**********************************************************************************
-
 testcase tiFormatDefault
 
-    '/// open application ///'
+    printlog "open application"
     Call hNewDocument
-    '/// create rectangle ///'
+    printlog "create rectangle"
     gMouseClick 50,50
     Call hRechteckErstellen ( 10, 10, 20, 40 )
-    '/// Format->Default ///'
+    printlog "Format->Default"
     FormatStandardDraw
-    '/// close application ///'
+    printlog "close application"
     Call hCloseDocument
+    
 endcase 'tiFormatDefault
 '---------------------------------------------------------------------------------------
-
 testcase tiFormatLine
-    '/// open application ///'
+
+    printlog "open application"
     hNewDocument
-    '/// create rectangle ///'
+    printlog "create rectangle"
     gMouseClick 50,50
     Call hRechteckErstellen ( 10, 10, 20, 40 )
-    '/// Format->Line ///'
+    printlog "Format->Line"
     FormatLine
-    '/// switch to tabpage 'Line' ///'
+    printlog "switch to tabpage 'Line'"
     Kontext
     Messagebox.SetPage TabLinie
     kontext "TabLinie"
     Call DialogTest ( TabLinie )
 
-    '/// switch to tabpage 'Line Styles' ///'
+    printlog "switch to tabpage 'Line Styles'"
     Kontext
     Messagebox.SetPage TabLinienstile
     kontext "TabLinienstile"
     Call DialogTest ( TabLinienstile )
-    '/// click 'add...' ///'
+    printlog "click 'add...'"
     Hinzufuegen.click
     Kontext "NameDLG"
-        Call DialogTest ( NameDlg )
-        '/// cancel dialog 'name' ///'
-        NameDlg.Cancel
+    Call DialogTest ( NameDlg )
+    printlog "cancel dialog 'name'"
+    NameDlg.Cancel
 
     kontext "TabLinienstile"
-        '/// click 'modify...' ///'
-        Aendern.Click
-        Kontext "NameDlg"
-            Call DialogTest ( NameDlg )
-            '/// cancel dialog 'name' ///'
-            NameDlg.Cancel
+    printlog "click 'modify...'"
+    Aendern.Click
+    Kontext "NameDlg"
+    Call DialogTest ( NameDlg )
+    printlog "cancel dialog 'name'"
+    NameDlg.Cancel
     kontext "TabLinienstile"
-        '/// click 'delete...' ///'
-        Loeschen.Click
-        '/// say NO to messagebox ///'
-        Kontext "Messagebox"
-            Messagebox.no
-
+    printlog "click 'delete...'"
+    Loeschen.Click
+    printlog "say NO to messagebox"
+    Kontext "Messagebox"
+    Messagebox.no
+    
     kontext "TabLinienstile"
-        '/// click 'load line styles' ///'
-        Oeffnen.click
-        Kontext "OeffnenDLG"
-            call Dialogtest (OeffnenDLG)
-            '/// cancel dialog 'open' ///'
-            OeffnenDLG.Cancel
+    printlog "click 'load line styles'"
+    Oeffnen.click
+    Kontext "OeffnenDLG"
+    call Dialogtest (OeffnenDLG)
+    printlog "cancel dialog 'open'"
+    OeffnenDLG.Cancel
     kontext "TabLinienstile"
-        '/// click 'save line styles' ///'
-        Speichern.click
-        Kontext "SpeichernDLG"
-        call Dialogtest (SpeichernDLG)
-        '/// cancel dialog 'save' ///'
-        SpeichernDLG.Cancel
-        '/// switch to tabpage 'Arrow Styles' ///'
-        Kontext
-        Messagebox.SetPage TabLinienenden
-        kontext "TabLinienenden"
-        Call DialogTest ( TabLinienenden )
-        '/// click 'add...' ///'
-        Hinzufuegen.Click
-        Kontext "NameDLG"
-        Call DialogTest ( NameDlg )
-        '/// cancel dialog 'name' ///'
-        NameDlg.Cancel
-
-        kontext "TabLinienenden"
-            '/// click 'modify...' ///'
-            Aendern.Click
-            Kontext "Messagebox"
-                try
-                    '/// say OK to messagebox ///'
-                    Messagebox.OK
-                catch
-                    'print "TabLinienenden"
-                endcatch
-
-                kontext "NameDlg"
-                    Call DialogTest ( NameDlg )
-                    '/// cancel dialog 'name' ///'
-                    NameDlg.Cancel
-
+    printlog "click 'save line styles'"
+    Speichern.click
+    Kontext "SpeichernDLG"
+    call Dialogtest (SpeichernDLG)
+    printlog "cancel dialog 'save'"
+    SpeichernDLG.Cancel
+    printlog "switch to tabpage 'Arrow Styles'"
+    Kontext
+    Messagebox.SetPage TabLinienenden
     kontext "TabLinienenden"
-        '/// click 'delete...' ///'
-        Loeschen.Click
-        Kontext "Messagebox"
-        '/// say NO to messagebox ///'
-        Messagebox.no
+    Call DialogTest ( TabLinienenden )
+    printlog "click 'add...'"
+    Hinzufuegen.Click
+    Kontext "NameDLG"
+    Call DialogTest ( NameDlg )
+    printlog "cancel dialog 'name'"
+    NameDlg.Cancel
 
     kontext "TabLinienenden"
-        '/// click 'load arrow styles' ///'
-        Oeffnen.click
-        Kontext "OeffnenDLG"
-            call Dialogtest (OeffnenDLG)
-            '/// cancel dialog 'open' ///'
-            OeffnenDLG.Cancel
-        kontext "TabLinienenden"
-            '/// click 'save arrow styles' ///'
-            Speichern.click
-        Kontext "SpeichernDLG"
-            call Dialogtest (SpeichernDLG)
-            '/// cancel dialog 'save' ///'
-            SpeichernDlg.Cancel
-        kontext "TabLinienenden"
-            '/// cancel dialog 'line' ///'
-            TabLinienenden.cancel
-    '/// close application ///'
+    printlog "click 'modify...'"
+    Aendern.Click
+    Kontext "Messagebox"
+    try
+        printlog "say OK to messagebox"
+        Messagebox.OK
+    catch
+        'print "TabLinienenden"
+    endcatch
+    
+    kontext "NameDlg"
+    Call DialogTest ( NameDlg )
+    printlog "cancel dialog 'name'"
+    NameDlg.Cancel
+    
+    kontext "TabLinienenden"
+    printlog "click 'delete...'"
+    Loeschen.Click
+    Kontext "Messagebox"
+    printlog "say NO to messagebox"
+    Messagebox.no
+    
+    kontext "TabLinienenden"
+    printlog "click 'load arrow styles'"
+    Oeffnen.click
+    Kontext "OeffnenDLG"
+    call Dialogtest (OeffnenDLG)
+    printlog "cancel dialog 'open'"
+    OeffnenDLG.Cancel
+    kontext "TabLinienenden"
+    printlog "click 'save arrow styles'"
+    Speichern.click
+    Kontext "SpeichernDLG"
+    call Dialogtest (SpeichernDLG)
+    printlog "cancel dialog 'save'"
+    SpeichernDlg.Cancel
+    kontext "TabLinienenden"
+    printlog "cancel dialog 'line'"
+    TabLinienenden.cancel
+    printlog "close application"
     Call hCloseDocument
+    
 endcase 'tiFormatLine
 '---------------------------------------------------------------------------------------
-
 testcase tdFormatArea
-    '/// open application ///'
+
+    printlog "open application"
     Call hNewDocument
-    '/// create rectangle ///'
+    printlog "create rectangle"
     gMouseClick 50,50
     Call hRechteckErstellen (15,15,65,65)
     gMouseClick 30,30
-    '/// Format->Area ///'
+    printlog "Format->Area"
     FormatArea
     WaitSlot (1000)
     Kontext
-    '/// switch to tabpage 'Area' ///'
+    printlog "switch to tabpage 'Area'"
     Messagebox.SetPage TabArea
     Kontext "TabArea"
-        Call DialogTest ( TabArea )
-        Kontext
-        '/// switch to tabpage 'Shadow' ///'
-        Messagebox.SetPage TabSchatten
+    Call DialogTest ( TabArea )
+    Kontext
+    printlog "switch to tabpage 'Shadow'"
+    Messagebox.SetPage TabSchatten
     kontext "TabSchatten"
-        Anzeigen.Check
-        Call DialogTest ( TabSchatten )
-        '/// switch to tabpage 'Transparency' ///'
+    Anzeigen.Check
+    Call DialogTest ( TabSchatten )
+    printlog "switch to tabpage 'Transparency'"
     Kontext
-    '/// switch to tabpage 'Colors' ///'
+    printlog "switch to tabpage 'Colors'"
     Messagebox.SetPage TabFarben
     kontext "TabFarben"
-        '/// select the 1st 'color' in the listbox ///'
-        Farbe.select 1
-        '/// select the 1st 'color model' in the listbox ///'
-        Farbmodell.Select 1
-        Call DialogTest ( TabFarben,1 )
-        '/// select the 2nd 'color model' in the listbox ///'
-        Farbmodell.Select 2
-        Call DialogTest ( TabFarben,2 )
-
-        '/// click button 'Add' ///'
-        Hinzufuegen.click
-        Kontext "Messagebox"
-            '/// say OK to the messagebox: the name already exists ///'
-            Messagebox.OK
-        kontext "NameDlg"
-            Call DialogTest ( NameDlg )
-            '/// cancel dialog 'Name' ///'
-            NameDlg.Cancel
+    printlog "select the 1st 'color' in the listbox"
+    Farbe.select 1
+    printlog "select the 1st 'color model' in the listbox"
+    Farbmodell.Select 1
+    Call DialogTest ( TabFarben,1 )
+    printlog "select the 2nd 'color model' in the listbox"
+    Farbmodell.Select 2
+    Call DialogTest ( TabFarben,2 )
+    
+    printlog "click button 'Add'"
+    Hinzufuegen.click
+    Kontext "Messagebox"
+    printlog "say OK to the messagebox: the name already exists"
+    Messagebox.OK
+    kontext "NameDlg"
+    Call DialogTest ( NameDlg )
+    printlog "cancel dialog 'Name'"
+    NameDlg.Cancel
     kontext "TabFarben"
-        '/// click button 'Delete' ///'
-        Loeschen.click
+    printlog "click button 'Delete'"
+    Loeschen.click
     Kontext "Messagebox"
-        '/// say NO to the messagebox: realy delete? ///'
-        Messagebox.no
+    printlog "say NO to the messagebox: realy delete?"
+    Messagebox.no
 
     kontext "TabFarben"
-        sleep 1
-        '/// click button 'Save color List' ///'
-        Speichern.click
-        Kontext "SpeichernDLG"
-            call Dialogtest (SpeichernDLG)
-            '/// cancel dialog 'save as' ///'
-            SpeichernDlg.Cancel
-            sleep 1
-
+    sleep 1
+    printlog "click button 'Save color List'"
+    Speichern.click
+    Kontext "SpeichernDLG"
+    call Dialogtest (SpeichernDLG)
+    printlog "cancel dialog 'save as'"
+    SpeichernDlg.Cancel
+    sleep 1
+    
     kontext "TabFarben"
-        '/// click button 'Load color List' ///'
-        Oeffnen.click
-        Kontext "OeffnenDLG"
-        call Dialogtest (OeffnenDLG)
-        '/// cancel dialog 'open' ///'
-        OeffnenDLG.Cancel
+    printlog "click button 'Load color List'"
+    Oeffnen.click
+    Kontext "OeffnenDLG"
+    call Dialogtest (OeffnenDLG)
+    printlog "cancel dialog 'open'"
+    OeffnenDLG.Cancel
     Kontext "TabFarben"
 
     Kontext
-    '/// switch to tabpage 'Gradients' ///'
+    printlog "switch to tabpage 'Gradients'"
     Messagebox.SetPage TabFarbverlaeufe
     kontext "TabFarbverlaeufe"
-        Call DialogTest ( TabFarbverlaeufe )
-
-        '/// click button 'Add' ///'
-        Hinzufuegen.click
-        Kontext "NameDlg"
-            Call DialogTest ( NameDlg )
-            '/// cancel dialog 'Name' ///'
-            NameDlg.Cancel
-
-        kontext "TabFarbverlaeufe"
-            '/// click button 'Mofify' ///'
-            Aendern.Click
-        Kontext "NameDlg"
-            Call DialogTest ( NameDlg )
-            '/// cancel dialog 'Name' ///'
-            NameDlg.Cancel
+    Call DialogTest ( TabFarbverlaeufe )
+    
+    printlog "click button 'Add'"
+    Hinzufuegen.click
+    Kontext "NameDlg"
+    Call DialogTest ( NameDlg )
+    printlog "cancel dialog 'Name'"
+    NameDlg.Cancel
+    
+    kontext "TabFarbverlaeufe"
+    printlog "click button 'Mofify'"
+    Aendern.Click
+    Kontext "NameDlg"
+    Call DialogTest ( NameDlg )
+    printlog "cancel dialog 'Name'"
+    NameDlg.Cancel
 
     kontext "TabFarbverlaeufe"
-    '/// click button 'Delete' ///'
+    printlog "click button 'Delete'"
     loeschen.click
     try
         kontext "Messagebox"
-        '/// say NO to the messagebox: realy delete? ///'
+        printlog "say NO to the messagebox: realy delete?"
         Messagebox.no
     catch
         warnlog "nobody cares about deleting a gradient :-("
     endcatch
 
     kontext "TabFarbverlaeufe"
-    '/// click button 'Load gradients List' ///'
-        Oeffnen.click
-        Kontext "OeffnenDLG"
-            call Dialogtest (OeffnenDLG)
-            '/// cancel dialog 'open' ///'
-            OeffnenDLG.Cancel
-        kontext "TabFarbverlaeufe"
-            '/// click button 'Save gradients List' ///'
-            Speichern.click
-        Kontext "SpeichernDLG"
-            call Dialogtest (SpeichernDLG)
-            '/// cancel dialog 'save as' ///'
-            SpeichernDLG.Cancel
+    printlog "click button 'Load gradients List'"
+    Oeffnen.click
+    Kontext "OeffnenDLG"
+    call Dialogtest (OeffnenDLG)
+    printlog "cancel dialog 'open'"
+    OeffnenDLG.Cancel
+    kontext "TabFarbverlaeufe"
+    printlog "click button 'Save gradients List'"
+    Speichern.click
+    Kontext "SpeichernDLG"
+    call Dialogtest (SpeichernDLG)
+    printlog "cancel dialog 'save as'"
+    SpeichernDLG.Cancel
 
     Kontext
-    '/// switch to tabpage 'Hatching'  - <Gesundheit!> ;-) ///'
+    printlog "switch to tabpage 'Hatching' "
     Messagebox.SetPage TabSchraffuren
-        kontext "TabSchraffuren"
-        Call DialogTest ( TabSchraffuren)
-
-        '/// click button 'Add' ///'
-        Hinzufuegen.click
-        Kontext "NameDlg"
-            Call DialogTest ( NameDlg )
-            '/// cancel dialog 'Name' ///'
-            NameDlg.Cancel
+    kontext "TabSchraffuren"
+    Call DialogTest ( TabSchraffuren)
+    
+    printlog "click button 'Add'"
+    Hinzufuegen.click
+    Kontext "NameDlg"
+    Call DialogTest ( NameDlg )
+    printlog "cancel dialog 'Name'"
+    NameDlg.Cancel
 
     kontext "TabSchraffuren"
-    '/// click button 'Modify' ///'
+    printlog "click button 'Modify'"
     Aendern.Click
     Kontext "NameDlg"
-        Call DialogTest ( NameDlg )
-        '/// cancel dialog 'Name' ///'
-        NameDlg.Cancel
+    Call DialogTest ( NameDlg )
+    printlog "cancel dialog 'Name'"
+    NameDlg.Cancel
 
     kontext "TabSchraffuren"
-        '/// click button 'Delete' ///'
-        Loeschen.click
-        kontext "Messagebox"
-            '/// say NO to the messagebox: realy delete? ///'
-            Messagebox.no
+    printlog "click button 'Delete'"
+    Loeschen.click
+    kontext "Messagebox"
+    printlog "say NO to the messagebox: realy delete?"
+    Messagebox.no
 
     kontext "TabSchraffuren"
-        '/// click button 'Load hatches List' ///'
-        Oeffnen.click
-        Kontext "OeffnenDLG"
-        call Dialogtest (OeffnenDLG)
-        '/// cancel dialog 'open' ///'
-        OeffnenDLG.Cancel
+    printlog "click button 'Load hatches List'"
+    Oeffnen.click
+    Kontext "OeffnenDLG"
+    call Dialogtest (OeffnenDLG)
+    printlog "cancel dialog 'open'"
+    OeffnenDLG.Cancel
     kontext "TabSchraffuren"
-        '/// click button 'Save hatches List' ///'
-        Speichern.click
-        Kontext "SpeichernDLG"
-            call Dialogtest (SpeichernDLG)
-            '/// cancel dialog 'save as' ///'
-            SpeichernDLG.Cancel
+    printlog "click button 'Save hatches List'"
+    Speichern.click
+    Kontext "SpeichernDLG"
+    call Dialogtest (SpeichernDLG)
+    printlog "cancel dialog 'save as'"
+    SpeichernDLG.Cancel
 
     Kontext
-    '/// switch to tabpage 'Bitmaps' ///'
+    printlog "switch to tabpage 'Bitmaps'"
     Messagebox.SetPage TabBitmap
     kontext "TabBitmap"
-        Call DialogTest ( TabBitmap )
-        '/// click button 'Reset' ///'
-        zurueck.click
-        sleep 1
-        '/// click button 'Add' ///'
-        hinzufuegen.click
-        Kontext "NameDlg"
-            Call DialogTest ( NameDlg )
-            '/// cancel dialog 'Name' ///'
-            NameDlg.cancel
+    Call DialogTest ( TabBitmap )
+    printlog "click button 'Reset'"
+    zurueck.click
+    sleep 1
+    printlog "click button 'Add'"
+    hinzufuegen.click
+    Kontext "NameDlg"
+    Call DialogTest ( NameDlg )
+    printlog "cancel dialog 'Name'"
+    NameDlg.cancel
 
     kontext "TabBitmap"
     try
-        '/// click button 'Modify' ///'
+        printlog "click button 'Modify'"
         Aendern.Click
         Kontext "NameDlg"
-            Call DialogTest ( NameDlg )
-            '/// cancel dialog 'Name' ///'
-            NameDlg.cancel
+        Call DialogTest ( NameDlg )
+        printlog "cancel dialog 'Name'"
+        NameDlg.cancel
     catch
         WarnLog "Control is disabled - modify bitmap"
     endcatch
     kontext "TabBitmap"
-        '/// click button 'Import' ///'
-        Import.Click
-        try
-            Kontext "GrafikEinfuegenDlg"
-            Call DialogTest ( GrafikEinfuegenDlg )
-            Kontext "GrafikEinfuegenDlg"
-                '/// cancel dialog 'Import' ///'
-                GrafikEinfuegenDlg.Cancel
-        catch
-            Warnlog "Insert graphic does not work"
-        endcatch
-
+    printlog "click button 'Import'"
+    Import.Click
+    try
+        Kontext "GrafikEinfuegenDlg"
+        Call DialogTest ( GrafikEinfuegenDlg )
+        Kontext "GrafikEinfuegenDlg"
+        printlog "cancel dialog 'Import'"
+        GrafikEinfuegenDlg.Cancel
+    catch
+        Warnlog "Insert graphic does not work"
+    endcatch
+    
     kontext "TabBitmap"
-        '/// click button 'Delete' ///'
-        loeschen.click
-        kontext "Messagebox"
-            '/// say NO to the messagebox: realy delete? ///'
-            Messagebox.no
-
+    printlog "click button 'Delete'"
+    loeschen.click
+    kontext "Messagebox"
+    printlog "say NO to the messagebox: realy delete?"
+    Messagebox.no
+    
     kontext "TabBitmap"
-        '/// click button 'Load Bitmap List' ///'
-        Oeffnen.click
-        Kontext "OeffnenDLG"
-            call Dialogtest (OeffnenDLG)
-            '/// cancel dialog 'open' ///'
-            OeffnenDLG.Cancel
+    printlog "click button 'Load Bitmap List'"
+    Oeffnen.click
+    Kontext "OeffnenDLG"
+    call Dialogtest (OeffnenDLG)
+    printlog "cancel dialog 'open'"
+    OeffnenDLG.Cancel
     kontext "TabBitmap"
-        '/// click button 'Save Bitmap List' ///'
-        Speichern.click
-        Kontext "SpeichernDLG"
-            call Dialogtest (SpeichernDLG)
-            '/// cancel dialog 'save as' ///'
-            SpeichernDLG.Cancel
+    printlog "click button 'Save Bitmap List'"
+    Speichern.click
+    Kontext "SpeichernDLG"
+    call Dialogtest (SpeichernDLG)
+    printlog "cancel dialog 'save as'"
+    SpeichernDLG.Cancel
     kontext "TabBitmap"
-        '/// cancel dialog 'Area' ///'
-        TabBitmap.Cancel
-    '/// close application ///'
+    printlog "cancel dialog 'Area'"
+    TabBitmap.Cancel
+    printlog "close application"
     Call hCloseDocument
+    
 endcase 'tdFormatArea
 '---------------------------------------------------------------------------------------
-
 testcase tiFormatText
-    '/// open application ///'
+    
+    printlog "open application"
     Call  hNewDocument
-    '/// Format->Text ///'
+    printlog "Format->Text"
     FormatTextDraw
     Kontext
-    '/// switch to tabpage 'Text' ///'
+    printlog "switch to tabpage 'Text'"
     Messagebox.SetPage TabText
     Kontext "TabText"
-        DialogTest ( TabText )
-        Kontext
-        '/// switch to tabpage 'Text Animation' ///'
+    DialogTest ( TabText )
+    Kontext
+    printlog "switch to tabpage 'Text Animation'"
     Messagebox.SetPage TabLauftext
     Kontext "TabLauftext"
-        DialogTest ( TabLauftext )
-        '/// cancel dialog 'text' ///'
-        TabLauftext.Cancel
-    '/// close application ///'
+    DialogTest ( TabLauftext )
+    printlog "cancel dialog 'text'"
+    TabLauftext.Cancel
+    printlog "close application"
     Call hCloseDocument
+
 endcase 'tdFormatArea
 '---------------------------------------------------------------------------------------
-
 testcase tiFormatPositionAndSize
-    '/// open application ///'
+
+    printlog "open application"
     Call  hNewDocument
-    '/// create rectangle ///'
+    printlog "create rectangle"
     Call hRechteckErstellen ( 10, 10, 20, 40 )
-    '/// Format->Position And Size ///'
+    printlog "Format->Position And Size"
     ContextPositionAndSize
     Kontext
-    '/// switch to tabpage 'Position' ///'
+    printlog "switch to tabpage 'Position'"
     Messagebox.setpage TabPositionAndSize
     Kontext "TabPositionAndSize"
-        call Dialogtest ( TabPositionAndSize )
-        '/// Type <right> two times in Position : Base Point ///'
-        kontext "PositionPosition"
-            PositionPosition.TypeKeys ("<right>", 2)
-            '/// Type <down> two times in Size : Base Point ///'
-        kontext "SizePosition"
-            SizePosition.TypeKeys ("<down>", 2)
-            Kontext
-    '/// switch to tabpage 'Rotation' ///'
+    call Dialogtest ( TabPositionAndSize )
+    printlog "Type <right> two times in Position : Base Point"
+    kontext "PositionPosition"
+    PositionPosition.TypeKeys ("<right>", 2)
+    printlog "Type <down> two times in Size : Base Point"
+    kontext "SizePosition"
+    SizePosition.TypeKeys ("<down>", 2)
+    Kontext
+    printlog "switch to tabpage 'Rotation'"
     Messagebox.setPage TabDrehung
     Kontext "TabDrehung"
-        call Dialogtest ( TabDrehung )
-        Kontext
-    '/// switch to tabpage 'Slant & Corner Radius' ///'
+    call Dialogtest ( TabDrehung )
+    Kontext
+    printlog "switch to tabpage 'Slant & Corner Radius'"
     Messagebox.setpage TabSchraegstellen
     Kontext "TabSchraegstellen"
-        call Dialogtest ( TabSchraegstellen )
-        '/// cancel dialog 'Position and Size' ///'
-        TabSchraegstellen.cancel
-    '/// close application ///'
+    call Dialogtest ( TabSchraegstellen )
+    printlog "cancel dialog 'Position and Size'"
+    TabSchraegstellen.cancel
+    printlog "close application"
     Call hCloseDocument
+    
 endcase 'tiFormatPositionAndSize
 '---------------------------------------------------------------------------------------
-
 testcase tiFormatCharacter
-'/// open application ///'
-   Call  hNewDocument
-'/// Format->Character ///'
+    
+    printlog "open application"
+    Call  hNewDocument
+    printlog "Format->Character"
     FormatCharacter
     WaitSlot (1000)
     Kontext
-'/// switch to tabpage 'Font' ///'
-  Messagebox.SetPage TabFont
-   kontext "TabFont"
-   sleep 1
-   Call DialogTest ( TabFont )
-   Kontext
-'/// switch to tabpage 'Font Effects' ///'
-  Messagebox.SetPage TabFontEffects
-   kontext "TabFontEffects"
-   sleep 1
-   Call DialogTest ( TabFontEffects )
-   sleep 1
-   Kontext
-'/// switch to tabpage 'Position' ///'
-  Messagebox.SetPage TabFontPosition
-   Kontext "TabFontPosition"
-   sleep 1
-   Call DialogTest ( TabFontPosition )
-   sleep 2
-'/// cancel dialog 'Character' ///'
-   TabFontPosition.Cancel
-'/// close application ///'
-   Call hCloseDocument
+    printlog "switch to tabpage 'Font'"
+    Messagebox.SetPage TabFont
+    kontext "TabFont"
+    sleep 1
+    Call DialogTest ( TabFont )
+    Kontext
+    printlog "switch to tabpage 'Font Effects'"
+    Messagebox.SetPage TabFontEffects
+    kontext "TabFontEffects"
+    sleep 1
+    Call DialogTest ( TabFontEffects )
+    sleep 1
+    Kontext
+    printlog "switch to tabpage 'Position'"
+    Messagebox.SetPage TabFontPosition
+    Kontext "TabFontPosition"
+    sleep 1
+    Call DialogTest ( TabFontPosition )
+    sleep 2
+    printlog "cancel dialog 'Character'"
+    TabFontPosition.Cancel
+    printlog "close application"
+    Call hCloseDocument
+   
 endcase 'tiFormatCharacter
-
 '---------------------------------------------------------------------------------------
 testcase tiFormatControlForm
 
-    '/// testcase: check if controls are available
     printlog "testcase: check if controls are available"
-    
-    '/// open new document
     printlog "open new document"
     Call  hNewDocument
  
     'click in the document to get the focus into the document
     if ( UCase(gApplication) = "DRAW" ) then
         Kontext "DocumentDraw"
-            DocumentDraw.MouseDown(50,50)
-            DocumentDraw.MouseUp(50,50)
+        DocumentDraw.MouseDown(50,50)
+        DocumentDraw.MouseUp(50,50)
     else 'Impress
         Kontext "DocumentImpress"
-            DocumentImpress.MouseDown(50,50)
-            DocumentImpress.MouseUp(50,50)
+        DocumentImpress.MouseDown(50,50)
+        DocumentImpress.MouseUp(50,50)
     endif
     
-    '/// open the form controls toolbar
     printlog "open the form controls toolbar"
     call hToolbarSelect("FormControls",true)
     
     kontext "FormControls"    
-    '/// insert a PushButton
     printlog "insert a PushButton"
     Pushbutton.Click
     Sleep 1
     gMouseMove (50, 20,70, 40)
-
-    '/// open the control properties dialog
+    
     printlog "open the control properties dialog"
     FormatControl
     
     Kontext "ControlPropertiesDialog"
     WaitSlot (1000)
-    '/// close the control properties dialog
     printlog "close the control properties dialog"
     ControlPropertiesDialog.Close
     
-    '/// open the form properties dialog
     printlog "open the form properties dialog"
     FormatForm
     Kontext "ControlPropertiesDialog"
     WaitSlot (1000)
-    '/// close the form properties dialog
     printlog "close the form properties dialog"
     ControlPropertiesDialog.Close
-
-    '/// close the form control toolbar
+    
     printlog "close the form control toolbar"
     call hToolbarSelect("FormControls",false)
-
-    '/// close application
+    
     printlog "close application"
     Call hCloseDocument
-    
+   
 endcase 'tiFormatControlForm
 '---------------------------------------------------------------------------------------
-
 testcase tiFormatDimensions
-'/// open application ///'
-   Call  hNewDocument
-'/// Format->Dimensions ///'
-   FormatDimensioning
-      Kontext "Bemassung"
-      DialogTest ( Bemassung )
-'/// cancel dialog 'Dimensioning' ///'
-      Bemassung.Cancel
-'/// close application ///'
-   Call hCloseDocument
-endcase 'tiFormatDimensions
 
+    printlog "open application"
+    Call  hNewDocument
+    printlog "Format->Dimensions"
+    FormatDimensioning
+    Kontext "Bemassung"
+    DialogTest ( Bemassung )
+    printlog "cancel dialog 'Dimensioning'"
+    Bemassung.Cancel
+    printlog "close application"
+    Call hCloseDocument
+   
+endcase 'tiFormatDimensions
 '---------------------------------------------------------------------------------------
 testcase tiFormatConnector
-'/// open application ///'
-   Call  hNewDocument
-'/// Format->Connector ///'
-   FormatConnector
-      Kontext "Verbinder"
-      DialogTest ( Verbinder )
-'/// cancel dialog 'Connector' ///'
-      Verbinder.Cancel
-'/// close application ///'
-   Call hCloseDocument
-endcase 'tiFormatConnector
 
+    printlog "open application"
+    Call  hNewDocument
+    printlog "Format->Connector"
+    FormatConnector
+    Kontext "Verbinder"
+    DialogTest ( Verbinder )
+    printlog "cancel dialog 'Connector'"
+    Verbinder.Cancel
+    printlog "close application"
+    Call hCloseDocument
+   
+endcase 'tiFormatConnector
 '---------------------------------------------------------------------------------------
 testcase tiFormat3D_Effects
-'/// open application ///'
-   Call  hNewDocument
-'/// Format->3D_Effects ///'
+
+    printlog "open application"
+    Call  hNewDocument
+    printlog "Format->3D_Effects"
     Format3D_Effects
-     Kontext "Drei_D_Effekte"
-     Call DialogTest ( Drei_D_Effekte,1 )
-'/// click button 'Geometry' ///'
-     Geometrie.Click
-     Call DialogTest ( Drei_D_Effekte,2 )
-     '/// click button 'Shading' ///'
-     Darstellung.Click
-     Call DialogTest ( Drei_D_Effekte,3 )
-     '/// click button 'Illumination' ///'
-     Beleuchtung.Click
-     Call DialogTest ( Drei_D_Effekte,4 )
-     '/// click button 'Textures' ///'
-     Texturen.Click
-     Call DialogTest ( Drei_D_Effekte,5 )
-     '/// click button 'Material' ///'
-     Material.Click
-     Call DialogTest ( Drei_D_Effekte,6 )
-     Kontext "Drei_D_Effekte"
-     '/// close dialog '3D Effects' ///'
-     Drei_D_Effekte.Close
-     '/// close application ///'
-   Call hCloseDocument
+    Kontext "Drei_D_Effekte"
+    Call DialogTest ( Drei_D_Effekte,1 )
+    printlog "click button 'Geometry'"
+    Geometrie.Click
+    Call DialogTest ( Drei_D_Effekte,2 )
+    printlog "click button 'Shading'"
+    Darstellung.Click
+    Call DialogTest ( Drei_D_Effekte,3 )
+    printlog "click button 'Illumination'"
+    Beleuchtung.Click
+    Call DialogTest ( Drei_D_Effekte,4 )
+    printlog "click button 'Textures'"
+    Texturen.Click
+    Call DialogTest ( Drei_D_Effekte,5 )
+    printlog "click button 'Material'"
+    Material.Click
+    Call DialogTest ( Drei_D_Effekte,6 )
+    Kontext "Drei_D_Effekte"
+    printlog "close dialog '3D Effects'"
+    Drei_D_Effekte.Close
+    printlog "close application"
+    Call hCloseDocument
+   
 endcase 'tiFormat3D_Effects
-
 '---------------------------------------------------------------------------------------
-
 testcase tiFormatNumberingBullets
-   '/// open application ///'
-   Call hNewDocument
+
+    printlog "open application"
+    Call hNewDocument
     WaitSlot (2000)
-    '/// Format->Numbering/Bullets ///'
+    printlog "Format->Numbering/Bullets"
     FormatNumberingBulletsDraw
     WaitSlot (2000)
-    '/// switch to tabpage 'Bullets' ///'
+    printlog "switch to tabpage 'Bullets'"
     Kontext
     Messagebox.SetPage TabBullet
     Kontext "TabBullet"
     Call DialogTest ( TabBullet )
     Kontext
-    '/// switch to tabpage 'Numbering Type' ///'
+    printlog "switch to tabpage 'Numbering Type'"
     Messagebox.SetPage TabNumerierungsart
     Kontext "TabNumerierungsart"
     Call DialogTest ( TabNumerierungsart )
     Kontext
-    '/// switch to tabpage 'Graphics' ///'
+    printlog "switch to tabpage 'Graphics'"
     Messagebox.SetPage TabGrafiken
     Kontext "TabGrafiken"
     Call DialogTest ( TabGrafiken )
     Kontext
-    '/// switch to tabpage 'Position' ///'
+    printlog "switch to tabpage 'Position'"
     Messagebox.SetPage TabPositionNumerierung
     Kontext "TabPositionNumerierung"
     Call DialogTest ( TabPositionNumerierung )
     Kontext
-    '/// switch to tabpage 'Customize' ///'
+    printlog "switch to tabpage 'Customize'"
     Messagebox.SetPage TabOptionenNumerierung
     Kontext "TabOptionenNumerierung"
     Call DialogTest ( TabOptionenNumerierung )
-    '/// select 7th entry from the top in the listbox 'Numbering' ///'
+    printlog "select 7th entry from the top in the listbox 'Numbering'"
     Numerierung.Select 9 ' last one always ? -> graphics
-      '/// click button graphics 'select' ///'
-      TabOptionenNumerierung.MouseDown 50,60
-      TabOptionenNumerierung.MouseUp 50,60
-      Auswahl.TypeKeys "<SPACE>"
-      '/// select 'From file' ///'
-      hMenuSelectNr (1)
-      sleep 3
-      '/// dialog 'link' with an grayed out & selected link checkbox ///'
-      Kontext "OeffnenDlg"
-      '/// cancel dialog 'link' ///'
-      OeffnenDlg.Cancel
-      sleep 1
-   sleep 1
-   Kontext
-   '/// switch to tabpage 'Customize' ///'
-   Messagebox.SetPage TabOptionenNumerierung
-   Kontext "TabOptionenNumerierung"
-   sleep 1
-   try
-      '/// click button graphics 'select' ///'
-      Auswahl.TypeKeys "<SPACE>"
-      '/// select 'Gallery' ///'
-      hMenuSelectNr (2)
-      '/// select 3rd element from the top 'blusquare.gif' ///'
-      hMenuSelectNr (3)
-      Sleep 2
-   catch
-      warnlog "couldn't do something :-) (1)"
-      Exceptlog
-      Call hMenuClose
-   endcatch
-   '/// cancel dialog 'Numbering/Bullets' ///'
-   TabOptionenNumerierung.Cancel
-   sleep 1
-   '/// close application ///'
-   Call hCloseDocument
+    printlog "click button graphics 'select'"
+    TabOptionenNumerierung.MouseDown 50,60
+    TabOptionenNumerierung.MouseUp 50,60
+    Auswahl.TypeKeys "<SPACE>"
+    printlog "select 'From file'"
+    hMenuSelectNr (1)
+    sleep 3
+    printlog "dialog 'link' with an grayed out & selected link checkbox"
+    Kontext "OeffnenDlg"
+    printlog "cancel dialog 'link'"
+    OeffnenDlg.Cancel
+    sleep 1
+    sleep 1
+    Kontext
+    printlog "switch to tabpage 'Customize'"
+    Messagebox.SetPage TabOptionenNumerierung
+    Kontext "TabOptionenNumerierung"
+    sleep 1
+    try
+        printlog "click button graphics 'select'"
+        Auswahl.TypeKeys "<SPACE>"
+        printlog "select 'Gallery'"
+        hMenuSelectNr (2)
+        printlog "select 3rd element from the top 'blusquare.gif'"
+        hMenuSelectNr (3)
+        Sleep 2
+    catch
+        warnlog "couldn't do something :-) (1)"
+        Exceptlog
+        Call hMenuClose
+    endcatch
+    printlog "cancel dialog 'Numbering/Bullets'"
+    TabOptionenNumerierung.Cancel
+    sleep 1
+    printlog "close application"
+    Call hCloseDocument
+   
 endcase 'tiFormatNumberingBullets
-
 '---------------------------------------------------------------------------------------
-
 testcase tiFormatCaseCharacter
-   '/// open application ///'
-   Call  hNewDocument
-   '/// create textbox with text ///'
-  Call hTextrahmenErstellen ("testit",20,20,50,30)
-  sleep 1
-   '/// move curser 1 time to the left ///'
-   hTypeKeys "<left>"
 
-    '/// Format->Case/Characters->Uppercase ///'
+    printlog "open application"
+    Call  hNewDocument
+    printlog "create textbox with text"
+    Call hTextrahmenErstellen ("testit",20,20,50,30)
+    sleep 1
+    printlog "move curser 1 time to the left"
+    hTypeKeys "<left>"
+    
+    printlog "Format->Case/Characters->Uppercase"
     FormatChangeCaseUpper
     WaitSlot (1000)
-    '/// Format->Case/Characters->Lowercase ///'
+    printlog "Format->Case/Characters->Lowercase"
     FormatChangeCaseLower
     WaitSlot (2000)
     if bAsianLan then
         if not gAsianSup then
             qaerrorlog "This is an asian language-office, but asian support was disabled in a previous test?"
         end if
-        '/// if asian language (81/82/86/88): ///'
+        printlog "if asian language (81/82/86/88):"
         try
-            '///+ Format->Case/Characters->Half-width ///'
+           printlog "+ Format->Case/Characters->Half-width"
             FormatChangeCaseHalfWidth
         catch
             Warnlog "Format / Change Case / Half Width does not work."
         endcatch
         WaitSlot (1000)
         try
-            '///+ Format->Case/Characters->Full-width ///'
+           printlog "+ Format->Case/Characters->Full-width"
             FormatChangeCaseFullWidth
         catch
             Warnlog "Format / Change Case / Full Width does not work!"
         endcatch
         sleep 1
         try
-            '///+ Format->Case/Characters->Hiragana ///'
+           printlog "+ Format->Case/Characters->Hiragana"
             FormatChangeCaseHiragana
         catch
             Warnlog "Format / Change Case / Hiragana does not work."
         endcatch
         sleep 1
         try
-            '///+ Format->Case/Characters->Katatana ///'
+           printlog "+ Format->Case/Characters->Katatana"
             FormatChangeCaseKatagana
         catch
             Warnlog "Format / Change Case / Katagana does not work."
         endcatch
     end if
-      '/// close application ///'
- Call hCloseDocument
+    printlog "close application"
+    Call hCloseDocument
+ 
 endcase 'tiFormatCaseCharacter
-
 '---------------------------------------------------------------------------------------
-
 testcase tiFormatParagraph
-   '/// open application ///'
-   Call  hNewDocument
-      '/// Format->Paragraph ///'
-   FormatParagraph
-   Kontext
-      '/// switch to tabpage 'Indents & Spacing' ///'
-   Messagebox.SetPage TabEinzuegeUndAbstaende
-      kontext "TabEinzuegeUndAbstaende"
-      Call DialogTest ( TabEinzuegeUndAbstaende )
-   Kontext
-      '/// switch to tabpage 'Alignment' ///'
-   Messagebox.SetPage TabAusrichtungAbsatz
-      Kontext "TabAusrichtungAbsatz"
-      Call DialogTest ( TabAusrichtungAbsatz )
-   Kontext
-      '/// switch to tabpage 'Tabs' ///'
-   Messagebox.SetPage TabTabulator
-      kontext "TabTabulator"
-      Call DialogTest ( TabTabulator )
-      '/// cancel dialog 'Paragraph' ///'
-      TabTabulator.Cancel
-      '/// close application ///'
-   Call hCloseDocument
-endcase
-
+    
+    printlog "open application"
+    Call  hNewDocument
+    printlog "Format->Paragraph"
+    FormatParagraph
+    Kontext
+    printlog "switch to tabpage 'Indents & Spacing'"
+    Messagebox.SetPage TabEinzuegeUndAbstaende
+    kontext "TabEinzuegeUndAbstaende"
+    Call DialogTest ( TabEinzuegeUndAbstaende )
+    Kontext
+    printlog "switch to tabpage 'Alignment'"
+    Messagebox.SetPage TabAusrichtungAbsatz
+    Kontext "TabAusrichtungAbsatz"
+    Call DialogTest ( TabAusrichtungAbsatz )
+    Kontext
+    printlog "switch to tabpage 'Tabs'"
+    Messagebox.SetPage TabTabulator
+    kontext "TabTabulator"
+    Call DialogTest ( TabTabulator )
+    printlog "cancel dialog 'Paragraph'"
+    TabTabulator.Cancel
+    printlog "close application"
+    Call hCloseDocument
+   
+endcase 'tiFormatParagraph
 '---------------------------------------------------------------------------------------
-
 testcase tiFormatPage
-   '/// open application ///'
-   Call hNewDocument
-   '/// Format->Page ///'
-   FormatSlideDraw
-   kontext
-   if Messagebox.exists (5) then
-      '/// switch to tabpage 'Page' ///'
-      Messagebox.SetPage TabSeite
-      Kontext "TabSeite"
-      if TabSeite.exists (5) then
-         Call Dialogtest (TabSeite)
-      else
-         warnlog "nope :-(1"
-      endif
-      sleep 1
-      kontext
-      '/// switch to tabpage 'Background' ///'
-      Messagebox.SetPage TabArea
-      sleep 1
-      kontext
-      if messagebox.GetRT = 304 then
+
+    printlog "open application"
+    Call hNewDocument
+    printlog "Format->Page"
+    FormatSlideDraw
+    kontext
+    if Messagebox.exists (5) then
+    printlog "switch to tabpage 'Page'"
+    Messagebox.SetPage TabSeite
+    Kontext "TabSeite"
+    if TabSeite.exists (5) then
+     Call Dialogtest (TabSeite)
+    else
+     warnlog "nope :-(1"
+    endif
+    sleep 1
+    kontext
+    printlog "switch to tabpage 'Background'"
+    Messagebox.SetPage TabArea
+    sleep 1
+    kontext
+    if messagebox.GetRT = 304 then
          printlog "active about pagesize != printersettings, will say NO: " + Messagebox.GetText
          try
             Messagebox.No
@@ -823,18 +818,18 @@ testcase tiFormatPage
          Call Dialogtest (TabArea)
       endif
       sleep 1
-      '/// cancel dialog 'Page Setup' ///'
+      printlog "cancel dialog 'Page Setup'"
       TabArea.Cancel
-   else
-      warnlog "FormatPage doesn't come up with dialog :-("
-   endif
-   '/// close application ///'
-   Call hCloseDocument
+    else
+        warnlog "FormatPage doesn't come up with dialog :-("
+    endif
+    printlog "close application"
+    Call hCloseDocument
+   
 endcase 'tiFormatParagraph
-
 '---------------------------------------------------------------------------------------
-
 testcase tiFormatStylesAndFormatting
+
     Dim sTemp as String
     dim sSettings(20,3) ' Control_name; control_type; value
     dim i as integer
@@ -941,83 +936,83 @@ testcase tiFormatStylesAndFormatting
         endif
     endif
     Call hCloseDocument
+    
 endcase 'tiFormatStylesAndFormatting
-
 '---------------------------------------------------------------------------------------
-
 testcase tiFormatFontwork
-'/// open application ///'
-   Call hNewDocument
-'/// create a textframe with text ///'
-   Call hTextrahmenErstellen ("Flightplanning via www.aua.com is hard!",20,20,50,30)
-   sleep 1
-'/// Format->Fontwork ///'
-   FormatFontwork
-   Kontext "FontWork"
-   if FontWork.exists (5) then
-      DialogTest ( FontWork )
-      sleep 1
-   '/// close dialog 'Fontwork' ///'
-      FontWork.Close
-   else
-      warnlog "FontWork didn't came up :-("
-   endif
-'/// close application ///'
-   Call hCloseDocument
-endcase 'tiFormatFontwork
 
+    printlog "open application"
+    Call hNewDocument
+    printlog "create a textframe with text"
+    Call hTextrahmenErstellen ("Flightplanning via www.aua.com is hard!",20,20,50,30)
+    sleep 1
+    printlog "Format->Fontwork"
+    FormatFontwork
+    Kontext "FontWork"
+    if FontWork.exists (5) then
+    DialogTest ( FontWork )
+    sleep 1
+    printlog "close dialog 'Fontwork'"
+    FontWork.Close
+    else
+        warnlog "FontWork didn't came up :-("
+    endif
+    printlog "close application"
+    Call hCloseDocument
+   
+endcase 'tiFormatFontwork
 '---------------------------------------------------------------------------------------
-
 testcase tiFormatGroup
-'/// open application ///'
-   Call hNewDocument
-'/// create 2 rectangles ///'
-      hRechteckErstellen ( 10, 10, 20, 20 )
-      hRechteckErstellen ( 30, 30, 40, 40 )
-'/// select both objects with keys [strg]+[a] ///'
-      EditSelectAll
-'/// DRAW: in Modify menu ///'
-'///+ Impress in Format menu ///'
-'///+ Format->Group / Modify->Group ///'
-      FormatGroupDraw
+
+    printlog "open application"
+    Call hNewDocument
+    printlog "create 2 rectangles"
+    hRechteckErstellen ( 10, 10, 20, 20 )
+    hRechteckErstellen ( 30, 30, 40, 40 )
+    printlog "select both objects with keys [strg]+[a]"
+    EditSelectAll
+    printlog "DRAW: in Modify menu"
+    printlog "+ Impress in Format menu"
+    printlog "+ Format->Group / Modify->Group"
+    FormatGroupDraw
     WaitSlot (1000)
-'/// Format->Edit Group / Modify->Enter Group ///'
-      FormatEditGroupDraw
+    printlog "Format->Edit Group / Modify->Enter Group"
+    FormatEditGroupDraw
     WaitSlot (1000)
-'/// Format->Exit Group / Modify->Exit Group ///'
-      FormatExitGroupDraw
+    printlog "Format->Exit Group / Modify->Exit Group"
+    FormatExitGroupDraw
     WaitSlot (1000)
-'/// Format->Ungroup Group / Modify->Ungroup Group ///'
-      FormatUngroupDraw
+    printlog "Format->Ungroup Group / Modify->Ungroup Group"
+    FormatUngroupDraw
     WaitSlot (1000)
-'/// close application ///'
+    printlog "close application"
    Call hCloseDocument
+   
 endcase 'tiFormatGroup
-
 '---------------------------------------------------------------------------------------
-
 testcase tiFormatStylesSlideDesign
-' create recktanglr; click outside ?
-'/// open application ///'
+
+    ' create recktanglr; click outside ?
+    printlog "open application"
    Call hNewDocument
     WaitSlot (3000)
-'/// Format->Styles->Slide Design ///'
-   FormatModifyLayout ' is OK : Format->Styles->Slide Design; 27064; SID_PRESENTATION_LAYOUT
+    printlog "Format->Styles->Slide Design"
+    FormatModifyLayout ' is OK : Format->Styles->Slide Design; 27064; SID_PRESENTATION_LAYOUT
     WaitSlot (1000)
-   Kontext "Seitenvorlage"
-   Call DialogTest ( Seitenvorlage )
-'/// check the checkboxes: ExchangeBackgroundPages and DeleteUnusedBackgrounds ///'
+    Kontext "Seitenvorlage"
+    Call DialogTest ( Seitenvorlage )
+    printlog "check the checkboxes: ExchangeBackgroundPages and DeleteUnusedBackgrounds"
       HintergrundseiteAustauschen.check
       DeleteUnusedBackgrounds.check
-'/// click button 'Load...' ///'
+    printlog "click button 'Load...'"
       Laden.Click
       kontext "Neu"
-'/// click button 'more' ///'
+    printlog "click button 'more'"
          Zusaetze.click
          sleep 1
       kontext "Neu"
-'/// check checkbox 'Preview' ///'
-   try
+    printlog "check checkbox 'Preview'"
+    try
          Vorschau.check
     catch
       printlog "Preview wasn't checkable :-( hopfully now:"
@@ -1026,14 +1021,14 @@ testcase tiFormatStylesSlideDesign
          Vorschau.check
       printlog "... OK :-)"
     endcatch
-'/// cancel dialog 'Load Slide Design' ///'
+    printlog "cancel dialog 'Load Slide Design'"
       Neu.cancel
-   Kontext "Seitenvorlage"
-'/// cancel dialog 'Slide Design' ///'
-   Seitenvorlage.Cancel
+    Kontext "Seitenvorlage"
+    printlog "cancel dialog 'Slide Design'"
+    Seitenvorlage.Cancel
     sleep 2
-'/// close application ///'
+    printlog "close application"
    Call hCloseDocument
+   
 endcase 'tiFormatStylesSlideDesign
-
 '---------------------------------------------------------------------------------------
commit 35cac88c3e7f728eb3ce1edc0f890d053c3d632c
Author: Release Engineers <releng at openoffice.org>
Date:   Fri Jul 3 14:21:50 2009 +0000

    CWS-TOOLING: integrate CWS dba32c
    2009-06-29 20:53:25 +0200 fs  r273484 : #i103138# Rectangle conversion
    2009-06-29 20:51:50 +0200 fs  r273483 : #i103138# yet more refactoring, now also setting the proper zoom level at the proper point in time
    2009-06-29 13:40:26 +0200 fs  r273470 : added svn:ignore to ignore output paths
    2009-06-29 10:08:54 +0200 fs  r273455 : #i103138#
    refactored the code for positioning/zooming the control
    Basically, we now allow adjustControlGeometry_throw (formerly known as positionControl_throw and setControlZoom) to
    take an additional ViewTransformation parameter, describing the transformation to obtain the actual
    control position/size. Consequently, positionControl itself also allows for a ViewTransformation parameter.
    This has become necessary since during painting, the device which we created our control for might not necessarily
    have a proper MapMode set. In this case, if we would use this map mode for calculating the control's position/size,
    this would lead to wrong results.
    Note that this problem was introduced by the fix for #i101398#: During the fix, we postponed the control creation
    to a later time (when it is really needed). At this later time, the MapMode at the device is broken, at the earlier
    time where we formerly crearted the control (createPrimitive2DSequence), it is not yet broken.
    Whether or not the MapMode is defined as "broken" might depend on one's point of view, however ...
    I consider it broken, since:
    - we need the map mode to obtain the proper zoom level, which is to be forwarded to the control
    - there are scenarios where the MapMode is *not* set to MAP_PIXEL (in those scenarios, everything works
      fine), and there are scenarios where it *is* set to MAP_PIXEL (in those the bug 103138 appears).
    It somehow feels wrong that one cannot rely on the device's map mode this way, but on the other hand
    one has no possibility to obtain the current zoom by other means.
    Note that one issue (still to be submitted) is left: In the page pane of a Draw/Impress document, controls
    have a wrong text size. This is because in this pane, the above-mentioned "broken" map mode is used,
    which means the controls have a zoom of "1:1" set, which is wrong here.
    2009-06-25 13:41:35 +0200 msc  r273380 : #100000# the tabs changed die to new properties
    2009-06-24 12:42:40 +0200 msc  r273330 : #102082# remove issue warning
    2009-06-22 10:43:14 +0200 fs  r273201 : createPrimitive2DSequence: care for being disposed
    2009-06-18 12:35:13 +0200 oj  r273109 : #i102305# make nooptfiles for gcc
    2009-06-17 12:14:37 +0200 oj  r273056 : #i102305# fix for linux
    2009-06-17 07:20:22 +0200 oj  r273046 : #i102305# move ValueTransfer into the for loop to avoid a crash under Linux
    2009-06-17 07:17:28 +0200 oj  r273045 : #i102305# use varchar
    2009-06-15 14:11:27 +0200 fs  r272983 : added since tag
    2009-06-15 12:11:39 +0200 oj  r272973 : #i102305# SAL_DLLPUBLIC_EXPORT inserted
    2009-06-15 11:08:53 +0200 fs  r272969 : #i10000#
    2009-06-15 09:25:13 +0200 fs  r272963 : merging fix for P1 issue #i102701#
    2009-06-11 11:31:24 +0200 fs  r272858 : #i10000# copied the fix which before the rebase was done in ../dialog/macropg.src
    2009-06-11 09:38:14 +0200 fs  r272846 : CWS-TOOLING: rebase CWS dba32c to trunk at 272827 (milestone: DEV300:m50)
    2009-06-02 09:53:10 +0200 fs  r272483 : #i10000#
    2009-05-29 15:55:03 +0200 fs  r272465 : #i100818#
    2009-05-29 12:58:43 +0200 fs  r272452 : don't apply comphelper::getString on possibly VOID any
    2009-05-29 10:38:35 +0200 oj  r272437 : #i101519# handle where condition
    2009-05-29 09:53:39 +0200 fs  r272434 : #i100818# call into releaseStubs /without/ locked GlobalMutex
    2009-05-28 07:53:44 +0200 oj  r272375 : #i101369# parse tree changed
    2009-05-27 14:53:36 +0200 fs  r272347 : #i10000#
    2009-05-27 09:29:15 +0200 oj  r272327 : #i101626# check for double before hard cast
    2009-05-27 09:13:58 +0200 oj  r272326 : #i101626# handle void correctly
    2009-05-27 08:04:39 +0200 oj  r272321 : #i102256# wrong method signature used
    2009-05-27 07:55:52 +0200 oj  r272320 : #i101519# look up parameter typ if used in function
    2009-05-27 06:49:07 +0200 oj  r272319 : #i101519# set parameter from rowset as well
    2009-05-26 13:30:56 +0200 oj  r272297 : #i101987# impl XBatchExecution
    2009-05-26 12:44:34 +0200 oj  r272293 : #i101700# check if group is not set
    2009-05-26 12:16:53 +0200 oj  r272290 : #i101369# resolved some reduce7reduce problems with boolean_term and search_condition
    2009-05-26 12:12:42 +0200 oj  r272289 : #i101369# fix for or on one line criteria
    2009-05-25 16:02:25 +0200 fs  r272257 : #i999704# +PROPERTY_MOUSE_WHEEL_BEHAVIOR
    2009-05-25 16:01:55 +0200 fs  r272256 : merging the changes from CWS dba32b herein
    2009-05-25 15:49:57 +0200 fs  r272254 : #i999704#
    2009-05-25 15:32:57 +0200 fs  r272252 : #i99704# grid columns also to respect the MouseWheelBehavior property
    2009-05-25 15:23:43 +0200 fs  r272251 : don't pass empty Anys to ::comphelper::getString
    2009-05-25 14:48:43 +0200 fs  r272248 : merged changes from CWS dba32b herein
    2009-05-25 14:44:40 +0200 fs  r272247 : #i99704# support new MouseWheelBehavior property
    2009-05-25 14:43:18 +0200 fs  r272246 : #i99704# WheelWithoutFocus (peer property) superseded by MouseWheelBehavior (model property)
    2009-05-25 14:41:03 +0200 fs  r272245 : #i99704# no need to set the mouse wheel behavior at the peer, this is now a model property, having the right default
    2009-05-25 14:39:31 +0200 fs  r272243 : removed dead import
    2009-05-25 14:35:36 +0200 fs  r272242 : the new EnableVisible doesn't make sense for grid columns
    2009-05-25 14:34:33 +0200 fs  r272241 : #i99704# +MouseWheelBehavior - allow to enable/disable the mouse wheel for the control, or make it focus-dependent
    2009-05-25 14:26:11 +0200 fs  r272240 : #i99704# change MouseSettings wheel flag (NoWheelActionWithoutFocus) to a three-state option, allowing to completely ignore the mouse wheel
    2009-05-23 21:35:59 +0200 fs  r272213 : localize 'sub component opened/closed' event
    2009-05-22 21:42:47 +0200 fs  r272211 : #i102003#
    2009-05-22 21:42:20 +0200 fs  r272210 : grammar
    2009-05-22 21:36:10 +0200 fs  r272209 : #i102140# load only once, not twice, and show error messages during loading (and during any form action, that is) asynchronously
    2009-05-22 21:35:11 +0200 fs  r272208 : #i102140# +clear
    2009-05-22 14:50:30 +0200 fs  r272194 : #i102139# for newly created DB docs, set the MacroExecutionMode to USE_CONFIG
    2009-05-22 12:03:42 +0200 fs  r272180 : #i88878#
    provided by noel.power at novell.com
    implement a visibility property (EnableVisible) for toolkit controls, and usage in forms and UNO dialogs
    2009-05-15 15:37:31 +0200 fs  r271942 : #i100671# corrected some @since tags, so autodoc has better chances of correctly reading them
    2009-05-15 15:33:11 +0200 fs  r271940 : don't call comphelper::getFOO for VOID values
    2009-05-15 15:08:31 +0200 fs  r271937 : includes
    2009-05-15 13:39:22 +0200 fs  r271934 : #i101398# createPrimitive2DSequence: when we already have a control, use the old code. In particular, call positionControlForPaint
    2009-05-15 12:33:48 +0200 fs  r271933 : make the geometry a part of the ControlPrimitive2D's identity
    2009-05-15 10:15:44 +0200 fs  r271928 : #i10000#
    2009-05-14 20:55:38 +0200 fs  r271921 : #i101398# don't reuse the name PRIMITIVE_ID_CONTROLPRIMITIVE2D, make the name of our own ControlPrimitive2D unique
    2009-05-14 20:55:31 +0200 fs  r271920 : #i101398# don't reuse the name PRIMITIVE_ID_CONTROLPRIMITIVE2D, make the name of our own ControlPrimitive2D unique
    2009-05-14 20:23:23 +0200 fs  r271919 : #i101622#
    2009-05-14 16:04:38 +0200 fs  r271898 : don't use comphelper::getInt32 on voids
    2009-05-14 16:04:12 +0200 fs  r271897 : merge fix for issue whose number just slipped my memory ... (originally fixed in CWS dba32b)
    2009-05-14 15:36:55 +0200 fs  r271895 : merging changes from DEV300:m48
    2009-05-07 14:43:19 +0200 fs  r271670 : #i101477#
    2009-05-07 14:37:30 +0200 fs  r271668 : #i101477#
    2009-05-07 09:27:30 +0200 oj  r271628 : #i101343# remove pch
    2009-05-06 09:36:02 +0200 fs  r271568 : getFoo: diagnostics
    2009-05-04 09:23:06 +0200 oj  r271438 : CWS-TOOLING: rebase CWS dba32c to trunk at 271427 (milestone: DEV300:m47)
    2009-04-29 23:18:13 +0200 fs  r271394 : #i101398# use a dedicated 2DPrimitive for UNO Controls, which is able to provide the B2DRange *without* actually creating the control
    2009-04-29 13:52:25 +0200 fs  r271366 : #i101308#

diff --git a/testautomation/dbaccess/optional/includes/ctrl_Wizards.inc b/testautomation/dbaccess/optional/includes/ctrl_Wizards.inc
index 0d72d6c..4ce62f2 100755
--- a/testautomation/dbaccess/optional/includes/ctrl_Wizards.inc
+++ b/testautomation/dbaccess/optional/includes/ctrl_Wizards.inc
@@ -222,15 +222,15 @@ testcase tGroupBoxWithDatasource
 	
     Kontext "FormularNavigator"
      sleep(1)     
-     FormularNavigator.TypeKeys "<DOWN>" , true
+     'Liste.TypeKeys "<DOWN>" , true
      sleep(1)
-     FormularNavigator.TypeKeys "<HOME>" , true
+     Liste.TypeKeys "<HOME>" , true
      sleep(1)
-     FormularNavigator.TypeKeys "<DOWN>" , true
+     Liste.TypeKeys "<DOWN>" , true
      sleep(1)
-     FormularNavigator.TypeKeys "<DOWN>" , true
+     Liste.TypeKeys "<DOWN>" , true
      sleep(1)
-     FormularNavigator.TypeKeys "<DOWN>" , true     
+     Liste.TypeKeys "<DOWN>" , true     
      sleep(1)
      Liste.OpenContextmenu
   	 sleep(2)
@@ -260,17 +260,17 @@ testcase tGroupBoxWithDatasource
    	 sleep(2)        
     
     Kontext "FormularNavigator"
-     FormularNavigator.TypeKeys "<DOWN>" , true ' this is needed , I don't know why
+     'Liste.TypeKeys "<DOWN>" , true ' this is needed , I don't know why
      sleep(1)
-     FormularNavigator.TypeKeys "<HOME>" , true
+     Liste.TypeKeys "<HOME>" , true
      sleep(1)
-     FormularNavigator.TypeKeys "<DOWN>" , true
+     Liste.TypeKeys "<DOWN>" , true
      sleep(1)
-     FormularNavigator.TypeKeys "<DOWN>" , true
+     Liste.TypeKeys "<DOWN>" , true
      sleep(1)
-     FormularNavigator.TypeKeys "<DOWN>" , true
+     Liste.TypeKeys "<DOWN>" , true
      sleep(1)
-     FormularNavigator.TypeKeys "<DOWN>" , true
+     Liste.TypeKeys "<DOWN>" , true
      sleep(1)
      Liste.OpenContextmenu
   	 sleep(2)
@@ -297,19 +297,19 @@ testcase tGroupBoxWithDatasource
    	 sleep(2)
     
     Kontext "FormularNavigator"
-     FormularNavigator.TypeKeys "<DOWN>" , true ' this is needed , I don't know why
+     'Liste.TypeKeys "<DOWN>" , true ' this is needed , I don't know why
      sleep(1)
-     FormularNavigator.TypeKeys "<HOME>" , true
+     Liste.TypeKeys "<HOME>" , true
      sleep(1)
-     FormularNavigator.TypeKeys "<DOWN>" , true
+     Liste.TypeKeys "<DOWN>" , true
      sleep(1)
-     FormularNavigator.TypeKeys "<DOWN>" , true
+     Liste.TypeKeys "<DOWN>" , true
      sleep(1)
-     FormularNavigator.TypeKeys "<DOWN>" , true
+     Liste.TypeKeys "<DOWN>" , true
      sleep(1)
-     FormularNavigator.TypeKeys "<DOWN>" , true
+     Liste.TypeKeys "<DOWN>" , true
      sleep(1)
-     FormularNavigator.TypeKeys "<DOWN>" , true     
+     Liste.TypeKeys "<DOWN>" , true     
      sleep(1)
      Liste.OpenContextmenu
   	 sleep(2)
@@ -393,9 +393,6 @@ endcase
 
 testcase tGroupBoxWithoutDatasource
 
-	warnlog "#102082# CTRL + C ddoes not work anymore in control properties dialog"
-	goto endsub
-
     '/// open a textdocument
     printlog "open a textdocument"
 
@@ -538,12 +535,8 @@ testcase tGroupBoxWithoutDatasource
   	Kontext "ControlPropertiesTabControl"
    	ControlPropertiesTabControl.SetPage TabGeneralControl
    	sleep (2)
-  	Kontext "TabGeneralControl"
-     TabGeneralControl.mouseDown(1,1)
-     TabGeneralControl.mouseUp(1,1)
-	 TabGeneralControl.TypeKeys "<TAB>" , true
-     TabGeneralControl.TypeKeys "<MOD1 C>" , true     
-     if getClipboard <> "Group 123" then
+  	Kontext "TabGeneralControl"          
+     if Label.getText() <> "Group 123" then
 		 warnlog "The label of the groupbox is not right." + getClipboard
 	 end if
 	 sleep (2)
diff --git a/testautomation/dbaccess/tools/controltools.inc b/testautomation/dbaccess/tools/controltools.inc
index 3c7e2b3..0ada936 100755
--- a/testautomation/dbaccess/tools/controltools.inc
+++ b/testautomation/dbaccess/tools/controltools.inc
@@ -166,10 +166,11 @@ function fSetControlProperty(sControlType, sPropertyName, sPropertyValue as stri
                     DefaultSelection2.setText(sPropertyValue)
                 elseif sPropertyName = "DefaultState" then
                     DefaultState.select(Cint(sPropertyValue))
-                elseif sPropertyName = "DefaultValue" then                    
+                elseif sPropertyName = "DefaultValue" then
                     TabGeneralControl.MouseDown 1,1,1,true
+                    TabGeneralControl.MouseUp 1,1,1,true
                     sleep(1)
-                    TabGeneralControl.TypeKeys "<TAB>" , 11 , true
+                    TabGeneralControl.TypeKeys "<TAB>" , 16 , true
                     sleep(1)
                     TabGeneralControl.TypeKeys sPropertyValue , true                    
                     sleep(1)
commit 3f9ed8f040f9714179a1fffd4013eebcfe663d82
Author: Release Engineers <releng at openoffice.org>
Date:   Fri Jul 3 12:24:35 2009 +0000

    CWS-TOOLING: integrate CWS dbaperf2
    2009-06-22 11:04:36 +0200 msc  r273202 : #100000# fix to run this test
    2009-06-22 09:41:04 +0200 msc  r273200 : #100000# correct case
    2009-06-22 09:02:42 +0200 msc  r273199 : new SRB
    2009-06-22 08:53:26 +0200 msc  r273198 : #100000
    2009-06-15 12:36:32 +0200 oj  r272976 : test
    2009-06-12 14:23:23 +0200 msc  r272918 : #101587# unused feature was removed
    2009-06-12 06:45:17 +0200 oj  r272903 : use GUI instead of OS
    2009-06-11 09:12:30 +0200 oj  r272845 : remove unused dep
    2009-06-11 09:11:09 +0200 oj  r272844 : ColumnAliasInOrderBy not supported
    2009-06-11 08:27:00 +0200 oj  r272843 : CWS-TOOLING: rebase CWS dbaperf2 to trunk at 272827 (milestone: DEV300:m50)
    2009-06-10 15:30:17 +0200 msc  r272822 : #100000
    2009-06-10 15:27:40 +0200 msc  r272820 : #102515# new function for the database type list
    2009-06-10 15:26:09 +0200 msc  r272818 : move file to dbaccess/tools/dbcreatetools.inc
    2009-06-10 15:20:10 +0200 msc  r272816 : #102515# new function for the database type list
    2009-06-10 12:34:46 +0200 oj  r272803 : #i101587# check extension
    2009-06-10 11:53:45 +0200 oj  r272800 : remove unused code
    2009-06-09 09:57:25 +0200 oj  r272752 : #i101587# EscapeDateTime moved into features section
    2009-06-09 09:56:26 +0200 oj  r272751 : enable finish
    2009-06-08 11:50:37 +0200 oj  r272726 : #i102588# move convert tzo saveDataSource
    2009-06-05 11:54:20 +0200 jsk  r272676 : #i102515# - NEW: Functions to retrieve Database names from API
    2009-06-05 10:52:22 +0200 jsk  r272671 : NEW: Functions to retrieve Database names from API
    2009-06-05 09:36:54 +0200 oj  r272666 : handle win and unx differently
    2009-06-05 09:36:28 +0200 oj  r272665 : handle win and unx differently
    2009-06-04 13:41:56 +0200 oj  r272625 : #i101268# make use of stringbuffer instead of oustring
    2009-06-04 10:18:14 +0200 oj  r272612 : add SAL_DLLPUBLIC_EXPORT
    2009-05-28 10:56:33 +0200 oj  r272381 : #i101587# create langpacks
    2009-05-28 10:41:59 +0200 oj  r272380 : #i101587# create langpacks
    2009-05-28 10:29:30 +0200 oj  r272379 : #i101587# create langpacks
    2009-05-07 10:11:46 +0200 oj  r271635 : fix compile warnings
    2009-05-07 07:01:31 +0200 oj  r271619 : change type from int32 to PathID
    2009-05-07 06:53:19 +0200 oj  r271618 : add all
    2009-05-06 14:57:02 +0200 oj  r271595 : add missing lib
    2009-05-06 14:56:54 +0200 oj  r271594 : no used anymore
    2009-05-06 14:56:08 +0200 oj  r271593 : no used anymore
    2009-05-06 14:54:25 +0200 oj  r271592 : no used anymore
    2009-05-06 14:45:59 +0200 oj  r271591 : add missing lib
    2009-05-06 14:41:54 +0200 oj  r271590 : change wnt
    2009-05-06 14:22:21 +0200 oj  r271589 : #i101587# use config for the drivers
    2009-05-06 14:21:39 +0200 oj  r271588 : #i101587# add new set for metadata and config data for driver
    2009-05-06 14:19:36 +0200 oj  r271587 : #i101587# handle metadata and props of driver
    2009-05-06 10:11:11 +0200 oj  r271570 : #i101587# correct wrong use of reference
    2009-05-06 09:24:33 +0200 oj  r271567 : #i101587# add new set for metadata
    2009-05-06 08:52:06 +0200 oj  r271563 : #i101587# add driver configuration
    2009-05-06 08:51:04 +0200 oj  r271562 : #i101587# add driver configuration
    2009-05-04 10:24:41 +0200 oj  r271442 : CWS-TOOLING: rebase CWS dbaperf2 to trunk at 271427 (milestone: DEV300:m47)
    2009-04-28 07:06:22 +0200 oj  r271303 : compile error
    2009-04-27 14:12:48 +0200 oj  r271270 : #i101268# make use of stringbuffer instead of oustring
    2009-04-27 14:12:27 +0200 oj  r271269 : #i101268# make use of stringbuffer instead of oustring
    2009-04-27 09:30:10 +0200 oj  r271255 : use string buffer when possible
    2009-04-24 11:56:01 +0200 oj  r271207 : #i101268# remove end() call from loop
    2009-04-23 14:24:03 +0200 oj  r271171 : add dep
    2009-04-23 13:25:25 +0200 oj  r271164 : #i101268# add config entries for database drivers
    2009-04-23 13:07:13 +0200 oj  r271161 : #i101268# add config entries for database drivers
    2009-04-23 13:06:33 +0200 oj  r271160 : #i101268# add parent url pattern entry for driver node
    2009-04-23 13:05:39 +0200 oj  r271159 : #i101268# add config entry for driver node
    2009-04-23 13:04:09 +0200 oj  r271157 : #i101268# add config entry for driver node
    2009-04-23 06:41:32 +0200 oj  r271142 : #i101268# add new configuration file Drivers
    2009-04-22 13:49:19 +0200 oj  r271103 : convert EOL
    2009-04-22 13:29:17 +0200 oj  r271101 : #i101268# use of driver configuration entries for features and properties
    2009-04-22 13:28:08 +0200 oj  r271100 : #i101268# use of driver configuration entries for features and properties
    2009-04-22 13:15:26 +0200 oj  r271098 : #i101268# add new configuration file Drivers
    2009-04-22 13:14:43 +0200 oj  r271097 : #i101268# use of driver configuration entries for features and properties

diff --git a/testautomation/dbaccess/optional/includes/db_IndexDesign.inc b/testautomation/dbaccess/optional/includes/db_IndexDesign.inc
index 04a1f22..e116af8 100755
--- a/testautomation/dbaccess/optional/includes/db_IndexDesign.inc
+++ b/testautomation/dbaccess/optional/includes/db_IndexDesign.inc
@@ -76,7 +76,7 @@ function tIndex(sFileName as String, sTableName as String)
         if ( not DatabaseIndexes.exists(3) ) then
             warnlog "The index design doesn't exists"
         endif
-        IndexList.select 2
+        IndexList.select 1
         DropIndex.Click
     Kontext "MessageBox"
         MessageBox.Yes
diff --git a/testautomation/dbaccess/optional/includes/db_Text.inc b/testautomation/dbaccess/optional/includes/db_Text.inc
index b345b87..e242bda 100755
--- a/testautomation/dbaccess/optional/includes/db_Text.inc
+++ b/testautomation/dbaccess/optional/includes/db_Text.inc
@@ -85,8 +85,8 @@ endcase
 '-------------------------------------------------------------------------
 testcase tOpenUTF8File(sFilename as string)
     
-    '/// copy the file TesttoolPath + dbaccess/optional/input/text_datasource/text_Database.txt" to your local wotk directory
-    printlog "copy the file TesttoolPath + dbaccess/optional/input/text_datasource/text_Database.txt to your local wotk directory"
+    '/// copy the file TesttoolPath + dbaccess/optional/input/text_datasource/text_database.txt" to your local wotk directory
+    printlog "copy the file TesttoolPath + dbaccess/optional/input/text_datasource/text_database.txt to your local wotk directory"
     app.FileCopy gTesttoolPath + ConvertPath("dbaccess/optional/input/text_datasource/text_database.txt"),gOfficePath + ConvertPath("user/work/text_database.txt")
 
     '/// open the text database create in the bas file
@@ -131,7 +131,7 @@ testcase tOpenUTF8File(sFilename as string)
         
     '/// open the table text_database
     printlog "open the table text_Database"    
-    call fOpenTable("text_Database")
+    call fOpenTable("text_database")
     
     '/// check if the first row contains the string öäü
     printlog "check if the first row contains the string öäü"
diff --git a/testautomation/dbaccess/required/includes/DatabaseTypes.inc b/testautomation/dbaccess/required/includes/DatabaseTypes.inc
index 7a24feb..2c2178f 100755
--- a/testautomation/dbaccess/required/includes/DatabaseTypes.inc
+++ b/testautomation/dbaccess/required/includes/DatabaseTypes.inc
@@ -87,7 +87,7 @@ testcase tMySQLODBCProperties
     
     Kontext "TabGeneral"    
         call DialogTest(TabGeneral)
-        DataBaseType.select(getIdForDatabaseType("MySQLODBC"))
+        DataBaseType.select(hGetDatabaseDisplayName("sdbc:mysql:odbc:*"))
         
     Kontext "ConnectionType"        
         NextBtn.Click
@@ -125,7 +125,7 @@ testcase tMySQLJDBCProperties
     
     Kontext "TabGeneral"    
         call DialogTest(TabGeneral)
-        DataBaseType.select(getIdForDatabaseType("MySQLJDBC"))    
+        DataBaseType.select(hGetDatabaseDisplayName("sdbc:mysql:jdbc:*"))    
         
     Kontext "ConnectionType"        
         NextBtn.Click
@@ -175,7 +175,7 @@ testcase tAdabasProperties
     
     Kontext "TabGeneral"    
         call DialogTest(TabGeneral)
-        DataBaseType.select(getIdForDatabaseType("AdabasD"))    
+        DataBaseType.select(hGetDatabaseDisplayName("sdbc:adabas:*"))    
         
     Kontext "ConnectionType"        
         NextBtn.Click
@@ -213,7 +213,7 @@ testcase tOracleJDBCProperties
     
     Kontext "TabGeneral"    
         call DialogTest(TabGeneral)
-        DataBaseType.select(getIdForDatabaseType("OracleJDBC")    
+        DataBaseType.select(hGetDatabaseDisplayName("jdbc:oracle:thin:*"))    
         
     Kontext "ConnectionType"        
         NextBtn.Click
@@ -249,7 +249,7 @@ testcase tJDBCProperties
     
     Kontext "TabGeneral"    
         call DialogTest(TabGeneral)
-        DataBaseType.select(getIdForDatabaseType("JDBC")    
+        DataBaseType.select(hGetDatabaseDisplayName("jdbc:*"))    
         
     Kontext "ConnectionType"        
         NextBtn.Click
@@ -282,7 +282,7 @@ testcase tLDAPProperties
     
     Kontext "TabGeneral"    
         call DialogTest(TabGeneral)
-        DataBaseType.select(getIdForDatabaseType("LDAP")  + 1 ) ' +1 because for mysql there are 2 entries    
+        DataBaseType.select(hGetDatabaseDisplayName("sdbc:address:ldap:*"))
         
     Kontext "ConnectionType"        
         NextBtn.Click
@@ -325,7 +325,7 @@ testcase tEvolutionProperties
         call DialogTest(TabGeneral)
         try
             if ( DatabaseType.getItemCount() > 12 ) then
-                DataBaseType.select(getIdForDatabaseType("Evolution"))    
+                DataBaseType.select(hGetDatabaseDisplayName("sdbc:address:evolution:ldap"))
                 Kontext "ConnectionType"        
                 ConnectionType.OK
             else
@@ -365,7 +365,7 @@ testcase tMozillaProperties
     
     Kontext "TabGeneral"    
         call DialogTest(TabGeneral)
-        DataBaseType.select(getIdForDatabaseType("Mozilla"))    
+        DataBaseType.select(hGetDatabaseDisplayName("sdbc:address:mozilla:"))
 
     'add sleep to give OOo time to react 
     sleep(2)    
@@ -396,7 +396,7 @@ testcase tSpreadsheetProperties
     
     Kontext "TabGeneral"    
         call DialogTest(TabGeneral)
-        DataBaseType.select(getIdForDatabaseType("CALC"))    
+        DataBaseType.select(hGetDatabaseDisplayName("sdbc:calc:*"))    
         
     Kontext "ConnectionType"        
         NextBtn.Click
@@ -426,7 +426,7 @@ testcase tTextProperties
     
     Kontext "TabGeneral"    
         call DialogTest(TabGeneral)
-        DataBaseType.select(getIdForDatabaseType("Text"))    
+        DataBaseType.select(hGetDatabaseDisplayName("sdbc:flat:*"))
         
     Kontext "ConnectionType"        
         NextBtn.Click
@@ -464,7 +464,7 @@ testcase tdBaseProperties
     
     Kontext "TabGeneral"    
         call DialogTest(TabGeneral)
-        DataBaseType.select(getIdForDatabaseType("dBase"))    
+        DataBaseType.select(hGetDatabaseDisplayName("sdbc:dbase:*"))
         
     Kontext "ConnectionType"        
         NextBtn.Click
@@ -502,7 +502,7 @@ testcase tODBCProperties
     
     Kontext "TabGeneral"    
         call DialogTest(TabGeneral)
-        DataBaseType.select(getIdForDatabaseType("ODBC"))    
+        DataBaseType.select(hGetDatabaseDisplayName("sdbc:odbc:*"))    
         
     Kontext "ConnectionType"        
         NextBtn.Click
@@ -576,12 +576,12 @@ function fCheckAdvancedDialog(sType as string)
         elseif sType = "MySQLODBC" OR sType = "MySQLJDBC" then
 
             'call fcheckControl(SQL92Check)
-            call fcheckControl(AppendAlias)
+            'call fcheckControl(AppendAlias)
             call fcheckControl(Ignoreprivileges)
-            call fcheckControl(ParameterSubstiti)
+            'call fcheckControl(ParameterSubstiti)
             call fcheckControl(DisplayVersionColumns)
             call fcheckControl(BooleanComparison)
-            call fcheckControl(EnableOuterJoin)
+            'call fcheckControl(EnableOuterJoin)
             call fcheckControl(CheckRequiredFields)
         
             
diff --git a/testautomation/dbaccess/required/input/sun-report-builder.oxt b/testautomation/dbaccess/required/input/sun-report-builder.oxt
index 53be263..658feda 100755
Binary files a/testautomation/dbaccess/required/input/sun-report-builder.oxt and b/testautomation/dbaccess/required/input/sun-report-builder.oxt differ
diff --git a/testautomation/dbaccess/tools/dbcreatetools.inc b/testautomation/dbaccess/tools/dbcreatetools.inc
index d0c8dba..a138310 100755
--- a/testautomation/dbaccess/tools/dbcreatetools.inc
+++ b/testautomation/dbaccess/tools/dbcreatetools.inc
@@ -91,7 +91,7 @@ function fCreateMySQL_ODBC_Datasource(sFileName, sOdbcDSN, sUser,optional sRegis
     Kontext "DatabaseWizard"    
         ConnectToDatabase.Check
         sleep(1)        
-        DatabaseType.select getIdForDatabaseType("MySQLODBC")
+        DatabaseType.select( hGetDatabaseDisplayName( "sdbc:mysql:odbc:*" ) )
         sleep(1)
         NextBtn.Click
         sleep(1)
@@ -182,7 +182,7 @@ function fCreateMySQL_JDBC_Datasource(sFileName,sDatabaseName,sHost,sPort,sUser,
     Kontext "DatabaseWizard"    
         ConnectToDatabase.Check
         sleep(1)        
-        DatabaseType.select getIdForDatabaseType("MySQLJDBC") - 1
+        DatabaseType.select( hGetDatabaseDisplayName( "sdbc:mysql:jdbc:*" ) )
         sleep(1)
         NextBtn.Click
         sleep(1)
@@ -271,7 +271,7 @@ function  fCreateAdabasDatasource(sFileName,sURL,sUser, optional sRegister) as b
         Kontext "DatabaseWizard"    
             ConnectToDatabase.Check
             sleep(1)        
-            DatabaseType.select getIdForDatabaseType("AdabasD") - 1
+            DatabaseType.select ( hGetDatabaseDisplayName( "sdbc:adabas:*" ) )
             sleep(1)
             NextBtn.Click
             sleep(1)        
@@ -369,7 +369,7 @@ function  fCreateLocalAdabasDatasource(sFileName,sDatabaseName,sSuperUser,sSuper
         Kontext "DatabaseWizard"    
             ConnectToDatabase.Check
             sleep(1)        
-            DatabaseType.select getIdForDatabaseType("AdabasD")
+            DatabaseType.select ( hGetDatabaseDisplayName( "sdbc:adabas:*" ) )
             sleep(1)
             NextBtn.Click
             sleep(1)
@@ -647,7 +647,7 @@ function  fCreateDbaseDatasource(sFileName,sURL, optional sRegister) as boolean
     Kontext "DatabaseWizard"    
         ConnectToDatabase.Check
         sleep(1)        
-        DatabaseType.select getIdForDatabaseType("dBase", DatabaseType) - 1
+        DatabaseType.select ( hGetDatabaseDisplayName( "sdbc:dbase:*" ) )
         sleep(1)
         NextBtn.Click
         sleep(1)
@@ -715,7 +715,7 @@ function fCreateADODatasource(sFileName,sURL,optional sRegister) as boolean
     Kontext "DatabaseWizard"    
         ConnectToDatabase.Check
         sleep(1)        
-        DatabaseType.select getIdForDatabaseType("ADO", DatabaseType)
+        DatabaseType.select ( hGetDatabaseDisplayName( "sdbc:ado:*" ) )
         sleep(1)
         NextBtn.Click
         sleep(1)
@@ -784,7 +784,7 @@ function fCreateTextDatasource(sFileName,sURL, optional sRegister) as boolean
     Kontext "DatabaseWizard"    
         ConnectToDatabase.Check
         sleep(1)        
-        DatabaseType.select getIdForDatabaseType("Text", DatabaseType) - 1
+        DatabaseType.select ( hGetDatabaseDisplayName( "sdbc:flat:*" ) )
         sleep(1)
         NextBtn.Click
         sleep(1)
@@ -859,7 +859,7 @@ function fCreateSpreadsheetDatasource(sFileName,sURL, optional sRegister) as boo
     Kontext "DatabaseWizard"    
         ConnectToDatabase.Check
         sleep(1)        
-        DatabaseType.Select (getIdForDatabaseType("CALC", DatabaseType) - 1) ' -1 because in the wizard there is on datasource less because of mysql
+        DatabaseType.Select (hGetDatabaseDisplayName( "sdbc:calc:*" ))
         sleep(1)
         NextBtn.Click
         sleep(1)
@@ -936,7 +936,7 @@ function fCreateLDAPAddressbookDatasource(sFileName,sHostName,sBaseDN,sPortNr,op
         Kontext "DatabaseWizard"    
             ConnectToDatabase.Check
             sleep(1)        
-            DatabaseType.select getIdForDatabaseType("LDAP", DatabaseType)
+            DatabaseType.select ( hGetDatabaseDisplayName( "sdbc:address:ldap:*" ) )
             sleep(1)
             NextBtn.Click
             sleep(1)
@@ -1011,7 +1011,7 @@ function fCreateEvolutionAddressbookDatasource(sFileName, optional sRegister) as
         Kontext "DatabaseWizard"    
             ConnectToDatabase.Check
             sleep(1)        
-            DatabaseType.select getIdForDatabaseType("Evolution", DatabaseType)
+            DatabaseType.select ( hGetDatabaseDisplayName( "sdbc:address:evolution:ldap" ) )
             sleep(1)
             NextBtn.Click
             sleep(1)
@@ -1083,7 +1083,7 @@ function fCreateKDEAddressbookDatasource(sFileName , optional sRegister) as bool
         Kontext "DatabaseWizard"    
             ConnectToDatabase.Check
             sleep(1)        
-            DatabaseType.select getIdForDatabaseType("KDE", DatabaseType)
+            DatabaseType.select ( hGetDatabaseDisplayName( "sdbc:address:kab" ) )
             sleep(1)
             NextBtn.Click
             sleep(1)
@@ -1155,7 +1155,7 @@ function fCreateWindowsAddressbookDatasource(sFileName , optional sRegister) as
         Kontext "DatabaseWizard"    
             ConnectToDatabase.Check
             sleep(1)        
-            DatabaseType.select getIdForDatabaseType("Windows", DatabaseType)
+            DatabaseType.select ( hGetDatabaseDisplayName( "sdbc:address:outlookexp" ) )
             sleep(1)
             NextBtn.Click
             sleep(1)
@@ -1227,7 +1227,7 @@ function fCreateOutlookAddressbookDatasource(sFileName, optional sRegister) as b
         Kontext "DatabaseWizard"    
             ConnectToDatabase.Check
             sleep(1)        
-            DatabaseType.select getIdForDatabaseType("Outlook", DatabaseType)
+            DatabaseType.select ( hGetDatabaseDisplayName( "sdbc:address:outlook" ) )
             sleep(1)
             NextBtn.Click
             sleep(1)
@@ -1299,7 +1299,7 @@ function fCreateMozillaAddressbookDatasource(sFileName, optional sRegister) as b
         Kontext "DatabaseWizard"    
             ConnectToDatabase.Check
             sleep(1)        
-            DatabaseType.select getIdForDatabaseType("Mozilla", DatabaseType) - 1
+            DatabaseType.select ( hGetDatabaseDisplayName( "sdbc:address:mozilla:" ) )
             sleep(1)
             NextBtn.Click
             sleep(1)
@@ -1460,92 +1460,135 @@ function fSetJDBCDriverFiles(sClassPath) as boolean
     
 end function
 '-------------------------------------------------------------------------
-function getIdForDatabaseType(sType as String ) as Integer
-    '/// get the index of the database type in the database type list box
-    '///+ in the connection type dialog     
-    '/// <u>parameter:</u>    
-    '/// <b>sType:</b> The name of the database type in english 
+private const VERBOSE = false
 
-    dim ii as integer
+function hGetInstalledDatabaseDrivers( dbDriverList() as string ) as integer
 
-    if (sType = "AdabasD") then        
-        ii = 4        
-    elseif (sType = "dBase") then
-        if gPlatform = "osx" then        
-         ii = 5
-        else    
-         ii = 6
-        endif
-    elseif (sType = "Access") then    
-        ii = 0
-    elseif (sType = "Evolution") then        
-        ii = 13
-    elseif (sType = "JDBC") then
-        if gPlatform = "osx" then        
-         ii = 7
-        else
-         ii = 8
-        endif
-    elseif (sType = "LDAP") then             
-        if gPlatGroup = "w95" then        
-         ii = 12        
-        else      
-         ii = 11
-        endif  
-    elseif (sType = "Mozilla") then   
-        if gPlatGroup = "w95" then        
-         ii = 11
-        elseif gPlatform = "osx" then        
-         ii = 9
-        else      
-         ii = 10
-        endif
-    elseif (sType = "MySQLJDBC") then        
-        ii = 2
-    elseif (sType = "MySQLODBC") then
-        ii = 1                    
-    elseif (sType = "ODBC") then
-        if gPlatform = "osx" then        
-         ii = 8
-        else
-         ii = 9
-        endif
-    elseif (sType = "OracleJDBC") then        
-        ii = 3                    
-    elseif (sType = "CALC") then        
-        if gPlatform = "osx" then        
-         ii = 4
-        else
-         ii = 5
-        endif
-    elseif (sType = "Text") then
-        if gPlatform = "osx" then        
-         ii = 6
-        else
-         ii = 7
-        endif 
-    elseif (sType = "ADO") then
-        ii = 9 ' only 9 because on windows +1 is added at the end
-    elseif (sType = "Windows") then ' windows addressbook
-        ii = 14 ' only 14 because on windows +1 is added at the end    
-    elseif (sType = "KDE") then
-        ii = 12
+    ' This function returns the number of currently installed database drivers.
+    ' Additionally it fills a given list (which should be large enough to hold
+    ' the names of all installed drivers) with the names and makes the list 
+    ' compatible to the listfunctions (which places the list size in element 0)
+    ' The list is platform dependent and might be locale dependent
+    ' Note that some drivers (like e.g. HSQL Database Engine) do *not* show up
+    ' in the Database Wizards listbox!
+
+    dim oUnoOfficeConnection as object
+    dim oUnoConfigurationAccess as object
+    dim aPropertyValue(1) as new com.sun.star.beans.PropertyValue
+    dim xViewRoot as object
+    dim aElements() as string
+    dim iCurrentDriver as integer
+    dim iDriverCount as integer
+
+    const CFN = "global::tools::includes::optional::t_database.inc::hGetInstalledDatabaseDrivers(): "
+    
+    ' Path to the node, searches all files below "Drivers" for "Installed" 
+    aPropertyValue( 0 ).Name  = "nodepath"
+    aPropertyValue( 0 ).Value = "org.openoffice.Office.DataAccess.Drivers/Installed"
+    
+    ' Connect to remote UNO
+    oUnoOfficeConnection = hGetUnoService( TRUE )
+    
+    if ( isNull( oUnoOfficeConnection )) then
+        warnlog( CFN & "Failed to establish UNO connection, hGetUnoService failed" )
+        hGetInstalledDatabaseDrivers() = 0
     else
-        ii = 0
+        ' Get a configuration provider
+        oUnoConfigurationAccess = oUnoOfficeConnection.createInstance( "com.sun.star.configuration.ConfigurationProvider" )
+        
+        ' Get access
+        xViewRoot = oUnoConfigurationAccess.createInstanceWithArguments( "com.sun.star.configuration.ConfigurationAccess", aPropertyValue() )
+        aElements() = xViewRoot.getElementNames()
+        
+        iDriverCount = ubound( aElements() )
+        dbDriverList( 0 ) = iDriverCount
+        for iCurrentDriver = 1 to iDriverCount
+            dbDriverList( iCurrentDriver ) = xViewRoot.getByName( aElements( iCurrentDriver ) ).getByName( "DriverTypeDisplayName" )
+        next iCurrentDriver
+        
     endif
+    
+    if ( VERBOSE ) then 
+        printlog( CFN & "Returning " & iDriverCount & " drivers" )
+    endif
+    hGetInstalledDatabaseDrivers() = iDriverCount
+    
+end function
 
-    ' when windows then +1 because the first entry 'MS Access' is only available under windows
-    if gPlatGroup = "w95" then        
-            ii = ii + 1    
-    ' when x86 then -1 because the Adabas entry on the 4. position is missing
-    elseif gPlatForm = "x86" then        
-        if ii > 3 then
-            ii = ii - 1
-        endif
+'*******************************************************************************
+
+function hGetDatabaseDisplayName( dbDriverURL as string ) as string
+
+    ' The xcu files (based on dev300m47) hold following driver definitions
+    ' which are used as parameter to this function. You get a plain text 
+    ' localized driver name as returnvalue which can be used directly to select
+    ' a driver in the Database Wizard.
+    
+    ' adabas.xcu:  "sdbc:adabas:*"
+    ' calc.xcu:    "sdbc:calc:*"
+    ' dbase.xcu:   "sdbc:dbase:*"
+    ' evoab.xcu:   "sdbc:address:evolution:ldap"
+    ' evoab.xcu:   "sdbc:address:evolution:groupwise"
+    ' flat.xcu:    "sdbc:flat:*"
+    ' ado.xcu:     "sdbc:ado:*"
+    ' hsqldb.xcu:  "sdbc:embedded:hsqldb"
+    ' kab.xcu:     "sdbc:address:kab"
+    ' mozab.xcu:   "sdbc:address:outlook"
+    ' mozab.xcu:   "sdbc:address:outlookexp"
+    ' mozab.xcu:   "sdbc:address:mozilla:"
+    ' mozab.xcu:   "sdbc:address:thunderbird:"
+    ' mozab.xcu:   "sdbc:address:ldap:*"
+    ' mysql.xcu:   "sdbc:mysql:jdbc:*"
+    ' mysql.xcu:   "sdbc:mysql:odbc:*"
+    ' odbc.xcu:    "sdbc:odbc:*"
+    ' jdbc.xcu:    "jdbc:*"
+    ' jdbc.xcu:    "jdbc:oracle:thin:*"
+    ' mysql.xcu:   "sdbc:mysql:jdbc:*"
+
+    
+    ' Note that some drivers (like e.g. HSQL Database Engine) do *not* show up
+    ' in the Database Wizards listbox!
+    
+
+    dim oUnoOfficeConnection as object
+    dim oUnoConfigurationAccess as object
+    dim aPropertyValue(1) as new com.sun.star.beans.PropertyValue
+    dim oConfig as object
+    dim oDriver as object
+    dim sDatabaseName as string
+ 
+    const CFN = "global::tools::includes::optional::t_database.inc::hGetDatabaseDisplayName(): "
+    
+    ' Path to the node, searches all files below "Drivers" for "Installed" 
+    aPropertyValue( 0 ).Name  = "nodepath"
+    aPropertyValue( 0 ).Value = "org.openoffice.Office.DataAccess.Drivers/Installed/"
+    
+    ' Connect to remote UNO
+    oUnoOfficeConnection = hGetUnoService( TRUE )
+    
+    if ( isNull( oUnoOfficeConnection )) then
+        warnlog( CFN & "Failed to establish UNO connection, hGetUnoService failed" )
+        sDatabaseName = ""
+    else
+        ' Get a configuration provider
+        oUnoConfigurationAccess = oUnoOfficeConnection.createInstance( "com.sun.star.configuration.ConfigurationProvider" )
+        
+        ' Get access
+        oConfig = oUnoConfigurationAccess.createInstanceWithArguments( "com.sun.star.configuration.ConfigurationAccess", aPropertyValue() )
+        try
+            oDriver = oConfig.getByName( dbDriverURL )
+            sDatabaseName = oDriver.getByName( "DriverTypeDisplayName" )
+        catch
+            warnlog( CFN & "Invalid driver or driver unsupported on this platform" )
+            sDatabaseName ""
+        endcatch
+        
     endif
     
-    getIdForDatabaseType = ii
+    if ( VERBOSE ) then 
+        printlog( CFN & "Database display string: " & sDatabaseName )
+    endif
+    hGetDataBaseDisplayName() = sDatabaseName
     
 end function
 
-
commit 0a60d053883cdd83f4aeeede3e6396bd9f312818
Author: Release Engineers <releng at openoffice.org>
Date:   Fri Jul 3 10:14:57 2009 +0000

    CWS-TOOLING: integrate CWS perftest08
    2009-07-02 10:03:16 +0200 lla  r273621 : #159516# support systems with no JAVA_HOME
    2009-07-02 10:00:25 +0200 lla  r273620 : #159516# if path is null this not an error
    2009-07-01 14:36:05 +0200 lla  r273583 : #159516# add check for wrong cygwin path
    2009-06-22 13:18:14 +0200 lla  r273223 : #159516# add PipeConnectionString
    2009-06-18 21:44:59 +0200 lla  r273137 : #159516# cleanups
    2009-06-18 21:44:17 +0200 lla  r273136 : #159516# handle null
    2009-06-18 21:42:56 +0200 lla  r273135 : #159516# add getElementCount() function
    2009-06-15 10:40:05 +0200 lla  r272966 : CWS-TOOLING: rebase CWS perftest08 to trunk at 272827 (milestone: DEV300:m50)
    2009-06-02 09:06:22 +0200 lla  r272480 : CWS-TOOLING: rebase CWS perftest08 to trunk at 272291 (milestone: DEV300:m49)
    2009-05-08 11:40:22 +0200 mib  r271710 : #159717#: File name info for performance test (added void to hasLogFile() parameter list)
    2009-05-05 14:14:25 +0200 mib  r271514 : #159717#: File name info for performance test
    2009-05-04 15:23:01 +0200 mib  r271466 : #159717#: File name infor for performance test
    2009-05-04 15:22:27 +0200 mib  r271465 : #159717#: File name infor for performance test
    2009-05-04 15:21:56 +0200 mib  r271464 : #159717#: File name infor for performance test
    2009-05-04 15:21:18 +0200 mib  r271462 : #159717#: File name infor for performance test
    2009-04-29 16:23:40 +0200 lla  r271383 : #159516# cleanups
    2009-04-29 16:23:20 +0200 lla  r271382 : #159516# cleanups
    2009-04-08 12:23:01 +0200 lla  r270631 : #159516# typo
    2009-04-07 10:30:35 +0200 lla  r270580 : #159516# add prototype
    2009-04-07 10:21:15 +0200 lla  r270579 : #159516# cleanup
    2009-04-03 09:05:26 +0200 lla  r270448 : #159516# small cleanups
    2009-03-30 13:22:26 +0200 lla  r270221 : #159517# merge perftest07

diff --git a/qadevOOo/runner/base/java_complex.java b/qadevOOo/runner/base/java_complex.java
index 3881acb..c5ff6af 100644
--- a/qadevOOo/runner/base/java_complex.java
+++ b/qadevOOo/runner/base/java_complex.java
@@ -27,7 +27,6 @@
  * for a copy of the LGPLv3 License.
  *
  ************************************************************************/
-
 package base;
 
 import complexlib.ComplexTestCase;
@@ -47,7 +46,8 @@ import util.PropertyName;
  * Test base for executing a java complex test.
  * @see base.TestBase
  */
-public class java_complex implements TestBase{
+public class java_complex implements TestBase
+{
 
     /**
      * This function executes the complex tests given as parameter "-o" or "TestJob". It querys for the correspond class
@@ -55,45 +55,47 @@ public class java_complex implements TestBase{
      * @param param 
      * @return true of all tests run successfuly, esle false
      */
-    public boolean executeTest(TestParameters param) {
-        
+    public boolean executeTest(TestParameters param)
+    {
+
         // is there an ini file for the complex tests defined?
-        String complexIniFileName = ((String)param.get("ComplexIni"));
-        if (complexIniFileName != null) {
+        String complexIniFileName = ((String) param.get("ComplexIni"));
+        if (complexIniFileName != null)
+        {
             CfgParser ini = new CfgParser(complexIniFileName);
             ini.getIniParameters(param);
         }
 
         // get the test job
-        String testJob = ((String)param.get("TestJob"));
+        String testJob = ((String) param.get("TestJob"));
 
         DescGetter descGetter = new ComplexDescGetter();
         // get the test jobs
-        DescEntry[] entries = descGetter.getDescriptionFor(testJob,null,true);
+        DescEntry[] entries = descGetter.getDescriptionFor(testJob, null, true);
         return executeTest(param, entries);
-        
-    }    
-    
-    
+
+    }
+
     /**
      * This function run the given DescEntry[] as ComplexTest
      * @param param 
      * @param entries 
      * @return true of all tests run successfuly, esle false
      */
-    public boolean executeTest(TestParameters param, DescEntry[] entries) {
+    public boolean executeTest(TestParameters param, DescEntry[] entries)
+    {
         // is there an ini file for the complex tests defined?
-        String complexIniFileName = ((String)param.get("ComplexIni"));
-    if (complexIniFileName != null)
+        String complexIniFileName = ((String) param.get("ComplexIni"));
+        if (complexIniFileName != null)
         {
             CfgParser ini = new CfgParser(complexIniFileName);
             ini.getIniParameters(param);
-    }
+        }
 
         DynamicClassLoader dcl = new DynamicClassLoader();
         ComplexTestCase testClass = null;
         boolean returnVal = true;
-        
+
 //        the concept of the TimeOut depends on runner logs. If the runner log, 
 //        for exmaple to start a test method, the timeout was restet. This is not
 //        while the test itself log something like "open docuent...".
@@ -101,43 +103,52 @@ public class java_complex implements TestBase{
 //        which works for serveral minutes. Ih this case the TimeOut get not trigger
 //        and the office was killed.
 //        In complex tests just use "ThreadTimeOut" as timout.
-        
+
         // param.put("TimeOut", new Integer(0));
 
-        for (int i=0; i<entries.length; i++) {
+        for (int i = 0; i < entries.length; i++)
+        {
 
-            if (entries[i] == null) continue;
+            if (entries[i] == null)
+            {
+                continue;
+            }
             String iniName = entries[i].longName;
             iniName = iniName.replace('.', '/');
-            CfgParser ini = new CfgParser(iniName+".props");
+            CfgParser ini = new CfgParser(iniName + ".props");
             ini.getIniParameters(param);
 
-            LogWriter log = (LogWriter)dcl.getInstance(
-                                                (String)param.get("LogWriter"));
+            LogWriter log = (LogWriter) dcl.getInstance((String) param.get("LogWriter"));
 
             AppProvider office = null;
-            if (!param.getBool("NoOffice")) {
-                try {
-                    office = (AppProvider)dcl.getInstance("helper.OfficeProvider");
+            if (!param.getBool("NoOffice"))
+            {
+                try
+                {
+                    office = (AppProvider) dcl.getInstance("helper.OfficeProvider");
                     Object msf = office.getManager(param);
-                    if (msf == null) {
+                    if (msf == null)
+                    {
                         returnVal = false;
                         continue;
                     }
-                    param.put("ServiceFactory",msf);
+                    param.put("ServiceFactory", msf);
                 }
-                catch(IllegalArgumentException e) {
+                catch (IllegalArgumentException e)
+                {
                     office = null;
                 }
             }
-            log.initialize(entries[i],param.getBool(PropertyName.LOGGING_IS_ACTIVE));
+            log.initialize(entries[i], param.getBool(PropertyName.LOGGING_IS_ACTIVE));
             entries[i].Logger = log;
 
             // create an instance
-            try {
-                testClass = (ComplexTestCase)dcl.getInstance(entries[i].longName);
+            try
+            {
+                testClass = (ComplexTestCase) dcl.getInstance(entries[i].longName);
             }
-            catch(java.lang.Exception e) {
+            catch (java.lang.Exception e)
+            {
                 e.printStackTrace();
                 return false;
             }
@@ -146,7 +157,8 @@ public class java_complex implements TestBase{
             Summarizer sum = new Summarizer();
             sum.summarizeUp(entries[i]);
 
-            if (office != null) {
+            if (office != null)
+            {
                 office.closeExistingOffice(param, false);
             }
 
@@ -158,5 +170,4 @@ public class java_complex implements TestBase{
         }
         return returnVal;
     }
-
 }
diff --git a/qadevOOo/runner/complexlib/ComplexTestCase.java b/qadevOOo/runner/complexlib/ComplexTestCase.java
index 3afd3e5..0232c0c 100644
--- a/qadevOOo/runner/complexlib/ComplexTestCase.java
+++ b/qadevOOo/runner/complexlib/ComplexTestCase.java
@@ -27,7 +27,6 @@
  * for a copy of the LGPLv3 License.
  *
  ************************************************************************/
-
 package complexlib;
 
 import java.lang.reflect.Method;
@@ -38,11 +37,11 @@ import share.LogWriter;
 import share.ComplexTest;
 import java.io.PrintWriter;
 
-
 /**
  * Base class for all complex tests.
  */
-public abstract class ComplexTestCase extends Assurance implements ComplexTest {
+public abstract class ComplexTestCase extends Assurance implements ComplexTest
+{
 
     /** The test parameters **/
     protected static TestParameters param = null;
@@ -70,31 +69,42 @@ public abstract class ComplexTestCase extends Assurance implements ComplexTest {
      * @param entry The name of the test method that should be called.
      * @param environment The environment for the test.
      */
-    public void executeMethods(DescEntry entry, TestParameters environment) {
+    public void executeMethods(DescEntry entry, TestParameters environment)
+    {
 
         // get the environment
         param = environment;
         log = entry.Logger;
 
         mThreadTimeOut = param.getInt("ThreadTimeOut");
-        if (mThreadTimeOut == 0) {
+        if (mThreadTimeOut == 0)
+        {
             mThreadTimeOut = 300000;
         }
         // start with the before() method
         boolean beforeWorked = true;
-        try {
-            Method before = this.getClass().getMethod("before", new Class[]{});
-            before.invoke(this, new Object[]{});
-        } catch (java.lang.NoSuchMethodException e) {
+        try
+        {
+            Method before = this.getClass().getMethod("before", new Class[] {} );
+            before.invoke(this, new Object[] {} );
+        }
+        catch (java.lang.NoSuchMethodException e)
+        {
             // simply ignore
-        } catch (java.lang.IllegalAccessException e) {
+        }
+        catch (java.lang.IllegalAccessException e)
+        {
             log.println("Cannot access the 'before()' method, although it" + " is there. Is this ok?");
-        } catch (java.lang.reflect.InvocationTargetException e) {
+        }
+        catch (java.lang.reflect.InvocationTargetException e)
+        {
             beforeWorked = false;
             Throwable t = e.getTargetException();
-            if (!(t instanceof RuntimeException) || state) {
+            if (!(t instanceof RuntimeException) || state)
+            {
                 log.println(t.toString());
-                if (message == null) {
+                if (message == null)
+                {
                     message = "Exception in before() method.\n\r" + t.getMessage();
                 }
                 state = false;
@@ -104,12 +114,16 @@ public abstract class ComplexTestCase extends Assurance implements ComplexTest {
 
 
         //executeMethodTests
-        for (int i = 0; i < entry.SubEntries.length; i++) {
+        for (int i = 0; i < entry.SubEntries.length; i++)
+        {
             subEntry = entry.SubEntries[i];
-            if (beforeWorked) {
+            if (beforeWorked)
+            {
                 state = true;
                 message = "";
-            } else {
+            }
+            else
+            {
                 // set all test methods on failed, if 'before()' did not work.
                 subEntry.State = message;
                 subEntry.hasErrorMsg = true;
@@ -117,18 +131,25 @@ public abstract class ComplexTestCase extends Assurance implements ComplexTest {
                 continue;
             }
             Method testMethod = null;
-            try {
+            try
+            {
                 String entryName = subEntry.entryName;
                 Object[] parameter = null;
-                
-                if (entryName.indexOf("(") != -1) {
-                    String sParameter = (entryName.substring(entryName.indexOf("(") +1 , entryName.indexOf(")")));
+
+                if (entryName.indexOf("(") != -1)
+                {
+                    String sParameter = (entryName.substring(entryName.indexOf("(") + 1, entryName.indexOf(")")));
                     mTestMethodName = entryName;
-                    parameter = new String[] {sParameter};
+                    parameter = new String[]
+                            {
+                                sParameter
+                            };
                     entryName = entryName.substring(0, entryName.indexOf("("));
-                    testMethod = this.getClass().getMethod(entryName, new Class[]{String.class });
-                } else {
-                    testMethod = this.getClass().getMethod(entryName, new Class[]{});
+                    testMethod = this.getClass().getMethod(entryName, new Class[] { String.class });
+                }
+                else
+                {
+                    testMethod = this.getClass().getMethod(entryName, new Class[] {} );
                     mTestMethodName = entryName;
                 }
 
@@ -136,7 +157,8 @@ public abstract class ComplexTestCase extends Assurance implements ComplexTest {
                 log.println("Starting " + mTestMethodName);
                 th.start();
 
-                try {
+                try
+                {
                     // some tests are very dynamic in its exceution time so that
                     // a threadTimeOut fials. In this cases the logging mechanisim
                     // is a usefull way to detect that a office respective a test
@@ -150,38 +172,48 @@ public abstract class ComplexTestCase extends Assurance implements ComplexTest {
                     int sleepingStep = 1000;
                     int factor = 0;
 
-                    while (th.isAlive() && (lastPing != newPing || factor * sleepingStep < mThreadTimeOut)) {
+                    while (th.isAlive() && (lastPing != newPing || factor * sleepingStep < mThreadTimeOut))
+                    {
                         Thread.sleep(sleepingStep);
                         factor++;
                         // if a test starts the office itself it the watcher is a
                         // new one.
                         share.Watcher ow = (share.Watcher) param.get("Watcher");
-                        if (ow != null) {
+                        if (ow != null)
+                        {
                             lastPing = newPing;
                             newPing = ow.getPing();
                             //System.out.println("lastPing: '" + lastPing + "' newPing '" + newPing + "'");
                             factor = 0;
                         }
                     }
-                } catch (InterruptedException e) {
                 }
-                if (th.isAlive()) {
+                catch (InterruptedException e)
+                {
+                }
+                if (th.isAlive())
+                {
                     log.println("Destroy " + mTestMethodName);
                     th.destroy();
                     subEntry.State = "Test did sleep for " + (mThreadTimeOut / 1000) + " seconds and has been killed!";
                     subEntry.hasErrorMsg = true;
                     subEntry.ErrorMsg = subEntry.State;
                     continue;
-                } else {
+                }
+                else
+                {
                     log.println("Finished " + mTestMethodName);
-                    if (th.hasErrorMessage()) {
+                    if (th.hasErrorMessage())
+                    {
                         subEntry.State = th.getErrorMessage();
                         subEntry.hasErrorMsg = true;
                         subEntry.ErrorMsg = subEntry.State;
                         continue;
                     }
                 }
-            } catch (java.lang.Exception e) {
+            }
+            catch (java.lang.Exception e)
+            {
                 log.println(e.getClass().getName());
                 String msg = e.getMessage();
                 log.println("Message: " + msg);
@@ -196,22 +228,34 @@ public abstract class ComplexTestCase extends Assurance implements ComplexTest {
             subEntry.ErrorMsg = message;
         }
 
-        if (beforeWorked) {
+        if (beforeWorked)
+        {
             // the after() method
-            try {
-                Method after = this.getClass().getMethod("after", new Class[]{});
-                after.invoke(this, new Object[]{});
-            } catch (java.lang.NoSuchMethodException e) {
+            try
+            {
+                Method after = this.getClass().getMethod("after", new Class[] {});
+                after.invoke(this, new Object[] {} );
+            }
+            catch (java.lang.NoSuchMethodException e)
+            {
                 // simply ignore
-            } catch (java.lang.IllegalAccessException e) {
+            }
+            catch (java.lang.IllegalAccessException e)
+            {
                 // simply ignore
-            } catch (java.lang.reflect.InvocationTargetException e) {
+            }
+            catch (java.lang.reflect.InvocationTargetException e)
+            {
                 Throwable t = e.getTargetException();
-                if (!(t instanceof StatusException)) {
+                if (!(t instanceof StatusException))
+                {
                     log.println(t.toString());
-                    if (message == null) {
+                    if (message == null)
+                    {
                         message = "Exception in after() method.\n\r" + t.getMessage();
-                    } else {
+                    }
+                    else
+                    {
                         message += "Exception in \'after()\' method.\n\r" + t.getMessage();
                     }
                     log.println("Message: " + message);
@@ -232,9 +276,8 @@ public abstract class ComplexTestCase extends Assurance implements ComplexTest {
      * Override to give an own name.
      * @return As default, the name of this class.
      */
-    public String getTestObjectName() {
+    public String getTestObjectName()
+    {
         return this.getClass().getName();
     }
-    
-
 }
\ No newline at end of file
diff --git a/qadevOOo/runner/graphical/IniFile.java b/qadevOOo/runner/graphical/IniFile.java
index ae182bb..69e017c 100644
--- a/qadevOOo/runner/graphical/IniFile.java
+++ b/qadevOOo/runner/graphical/IniFile.java
@@ -39,7 +39,7 @@ import java.util.Enumeration;
    Helper class to give a simple API to read/write windows like ini files
  */
 /* public */ // is only need, if we need this class outside package convwatch
-class IniFile implements Enumeration
+public class IniFile implements Enumeration
 {
     /**
      * internal representation of the ini file content.
@@ -659,4 +659,21 @@ public void removeSection(String _sSectionToRemove)
         }
         return null;
     }
+
+    /**
+     * Helper to count the occurence of Sections
+     * @return returns the count of '^['.*']$' Elements
+     */
+    public int getElementCount()
+    {
+        int nCount = 0;
+        int nPosition = 0;
+        while ((nPosition = findNextSection(nPosition)) != -1)
+        {
+            nCount ++;
+            nPosition ++;
+        }
+        return nCount;
+    }
 }
+
diff --git a/qadevOOo/runner/graphical/JPEGComparator.java b/qadevOOo/runner/graphical/JPEGComparator.java
index 88aa925..701dc53 100644
--- a/qadevOOo/runner/graphical/JPEGComparator.java
+++ b/qadevOOo/runner/graphical/JPEGComparator.java
@@ -265,6 +265,9 @@ public class JPEGComparator extends EnhancedComplexTestCase
         _aParams.getTestParameters().put("current_state", sStatusRunThrough);
         _aParams.getTestParameters().put("current_info", sStatusMessage);
         _aParams.getTestParameters().put("current_ok_status", ok_status);
+
+        // if we have a ugly page, we must return this as a FAILED STATUS in Log file!
+        // assure( "There exist pages marked as ugly.", ugly == 0)
     }
 
     private void checkOnePicture(String _sDocumentName, String _sResult, ParameterHelper _aParams)
diff --git a/qadevOOo/runner/helper/CfgParser.java b/qadevOOo/runner/helper/CfgParser.java
index ff9506f..2f9bff1 100644
--- a/qadevOOo/runner/helper/CfgParser.java
+++ b/qadevOOo/runner/helper/CfgParser.java
@@ -27,7 +27,6 @@
  * for a copy of the LGPLv3 License.
  *
  ************************************************************************/
-
 package helper;
 
 import lib.TestParameters;
@@ -41,97 +40,126 @@ import util.PropertyName;
  * <br>
  * inside TestParameters
  */
-public class CfgParser {
+public class CfgParser
+{
+
     protected boolean debug = false;
-    protected String iniFile="";
+    protected String iniFile = "";
 
-    public CfgParser(String ini) {
+    public CfgParser(String ini)
+    {
         if (ini != null)
+        {
             this.iniFile = ini;
+        }
     }
 
-    public void getIniParameters(TestParameters param) {
+    public void getIniParameters(TestParameters param)
+    {
         debug = param.DebugIsActive;
         Properties cfg = null;
-        if (iniFile.equals("")) {
+        if (iniFile.equals(""))
+        {
             //no iniFile given, search one in the users home directory
             cfg = getProperties(getDefaultFileName(true));
             //try to search the user dir if no iniFile could be found yet
-            if (cfg == null) {
+            if (cfg == null)
+            {
                 cfg = getProperties(getDefaultFileName(false));
             }
-        } else {
+        }
+        else
+        {
             cfg = getProperties(iniFile);
         }
-                
-        if (cfg != null) {
+
+        if (cfg != null)
+        {
             Enumeration cfgEnum = cfg.keys();
-            while (cfgEnum.hasMoreElements()) {
+            while (cfgEnum.hasMoreElements())
+            {
                 String pName = (String) cfgEnum.nextElement();
                 Object pValue = cfg.getProperty(pName);
-                
-                if (pValue instanceof String) pValue = ((String)pValue).trim();
-                
-                param.put(pName.trim(),pValue);
-
-                if (pName.equals(PropertyName.TEST_DOCUMENT_PATH)) {
-                    
-                    param.put("DOCPTH",(String)pValue);
-                    System.setProperty("DOCPTH",(String)pValue);
-                    
+
+                if (pValue instanceof String)
+                {
+                    pValue = ((String) pValue).trim();
+                }
+
+                param.put(pName.trim(), pValue);
+
+                if (pName.equals(PropertyName.TEST_DOCUMENT_PATH))
+                {
+
+                    param.put("DOCPTH", (String) pValue);
+                    System.setProperty("DOCPTH", (String) pValue);
+
                 }
-                if (pName.equals(PropertyName.SRC_ROOT)) {
-                    
-                    System.setProperty(pName,(String)pValue);
-                    
+                else if (pName.equals(PropertyName.SRC_ROOT))
+                {
+
+                    System.setProperty(pName, (String) pValue);
+
                 }
             }
         }
-        
+
         debug = param.DebugIsActive;
-        
+
         //check for platform dependend parameters
         //this would have a $OperatingSystem as prefix
         String os = (String) param.get(PropertyName.OPERATING_SYSTEM);
-        if (os != null && os.length()>1) {
+        if (os != null && os.length() > 1)
+        {
 
             //found something that could be a prefex
             //check all parameters for this
             Enumeration keys = param.keys();
-            while (keys.hasMoreElements()) {
+            while (keys.hasMoreElements())
+            {
                 String key = (String) keys.nextElement();
-                if (key.startsWith(os)) {
+                if (key.startsWith(os))
+                {
                     Object oldValue = param.get(key);
-                    String newKey = key.substring(os.length()+1);
+                    String newKey = key.substring(os.length() + 1);
                     param.remove(key);
-                    param.put(newKey,oldValue);
-                }                
+                    param.put(newKey, oldValue);
+                }
             }
-            
+
         }
     }
 
-    protected Properties getProperties(String name) {
+    protected Properties getProperties(String name)
+    {
         // get the resource file
         Properties prop = new Properties();
-        if ( debug ) {
-            System.out.println("Looking for "+name);
+        if (debug)
+        {
+            System.out.println("Looking for " + name);
         }
-        try {
+        try
+        {
             FileInputStream propFile = new FileInputStream(name);
             prop.load(propFile);
-            System.out.println("Parsing properties from "+name);
+            System.out.println("Parsing properties from " + name);
             propFile.close();
-        } catch (Exception e) {
-            try {
-                java.net.URL url = this.getClass().getResource("/"+name);
-                if (url != null) {
-                    System.out.println("Parsing properties from "+name);
+        }
+        catch (Exception e)
+        {
+            try
+            {
+                java.net.URL url = this.getClass().getResource("/" + name);
+                if (url != null)
+                {
+                    System.out.println("Parsing properties from " + name);
                     java.net.URLConnection connection = url.openConnection();
                     java.io.InputStream in = connection.getInputStream();
                     prop.load(in);
                 }
-            } catch (Exception ex) {
+            }
+            catch (Exception ex)
+            {
                 //Exception while reading prop-file, returning null
                 return null;
             }
@@ -140,22 +168,28 @@ public class CfgParser {
         return prop;
     }
 
-    protected String getDefaultFileName(boolean home) {
+    protected String getDefaultFileName(boolean home)
+    {
         String fileSeparator = System.getProperty("file.separator");
         String path = "";
-        if (home) {
+        if (home)
+        {
             //look inside the home directory
             path = System.getProperty("user.home");
-        } else {
+        }
+        else
+        {
             path = System.getProperty("user.dir");
         }
-        if (fileSeparator.equals("/")) {
+        if (fileSeparator.equals("/"))
+        {
             //suppose I'm on Unix-platform
-            return path+fileSeparator+".runner.props";
-        } else {
+            return path + fileSeparator + ".runner.props";
+        }
+        else
+        {
             //suppose I'm on Windows
-            return path+fileSeparator+"runner.props";
+            return path + fileSeparator + "runner.props";
         }
     }
-
 }
diff --git a/qadevOOo/runner/helper/ClParser.java b/qadevOOo/runner/helper/ClParser.java
index 4c6241b..8cf0f80 100644
--- a/qadevOOo/runner/helper/ClParser.java
+++ b/qadevOOo/runner/helper/ClParser.java
@@ -39,54 +39,74 @@ import util.utils;
  * This class parses commandline Argument and stores <br>
  * them into TestParameter
  */
-public class ClParser {
+public class ClParser
+{
     /*
      * Parses the commandline argument and puts them<br>
      * into the TestParameters
      */
 
-    public void getCommandLineParameter(TestParameters param, String[] args) {
+    public void getCommandLineParameter(TestParameters param, String[] args)
+    {
         Properties mapping = getMapping();
 
-        for (int i = 0; i < args.length;) {
+        for (int i = 0; i < args.length;)
+        {
             String pName = getParameterFor(mapping, args[i]).trim();
             String pValue = "";
-            if (pName.equals("TestJob")) {
-                if (args.length > (i + 1)) {
+            if (pName.equals("TestJob"))
+            {
+                if (args.length > (i + 1))
+                {
                     pValue = args[i].trim() + " " + args[i + 1].trim();
                     i += 2;
-                } else {
+                }
+                else
+                {
                     pValue = args[i].trim() + " unknown";
                     i += 2;
                 }
-            } else {
-                if ((i + 1) < args.length) {
+            }
+            else
+            {
+                if ((i + 1) < args.length)
+                {
                     pValue = args[i + 1].trim();
 
-                    if (pValue.startsWith("-")) {
+                    if (pValue.startsWith("-"))
+                    {
                         i++;
                         pValue = "yes";
-                    } else if (pValue.startsWith("'")) {
+                    }
+                    else if (pValue.startsWith("'"))
+                    {
                         i++;
-                        while (!pValue.endsWith("'")) {
+                        while (!pValue.endsWith("'"))
+                        {
                             i++;
                             pValue = pValue + " " + args[i].trim();
 
                         }
                         pValue = utils.replaceAll13(pValue, "'", "");
                         i++;
-                    } else {
+                    }
+                    else
+                    {
                         i += 2;
                     }
 
-                    if (pName.equals("TestDocumentPath")) {
+                    if (pName.equals("TestDocumentPath"))
+                    {
                         System.setProperty("DOCPTH", pValue);
                     }
-                    if (pName.equals(PropertyName.SRC_ROOT)) {
-                        System.setProperty(pName,pValue);
+                    else if (pName.equals(PropertyName.SRC_ROOT))
+                    {
+                        System.setProperty(pName, pValue);
 
                     }
-                } else {
+                }
+                else
+                {
                     pValue = "yes";
                     i++;
                 }
@@ -100,11 +120,14 @@ public class ClParser {
      * This method returns the path to a Configuration file <br>
      * if defined as command line parameter, an empty String elsewhere
      */
-    public String getIniPath(String[] args) {
+    public String getIniPath(String[] args)
+    {
         String iniFile = "";
 
-        for (int i = 0; i < args.length; i++) {
-            if (args[i].equals("-ini")) {
+        for (int i = 0; i < args.length; i++)
+        {
+            if (args[i].equals("-ini"))
+            {
                 iniFile = args[i + 1];
                 break;
             }
@@ -117,11 +140,14 @@ public class ClParser {
      * This method returns the path to a Configuration file <br>
      * if defined as command line parameter, an empty String elsewhere
      */
-    public String getRunnerIniPath(String[] args) {
+    public String getRunnerIniPath(String[] args)
+    {
         String iniFile = "";
 
-        for (int i = 0; i < args.length; i++) {
-            if (args[i].equals("-runnerini")) {
+        for (int i = 0; i < args.length; i++)
+        {
+            if (args[i].equals("-runnerini"))
+            {
                 iniFile = args[i + 1];
                 break;
             }
@@ -133,7 +159,8 @@ public class ClParser {
     /*
      * This method maps commandline Parameters to TestParameters
      */
-    protected Properties getMapping() {
+    protected Properties getMapping()
+    {
         Properties map = new Properties();
         map.setProperty("-cs", "ConnectionString");
         map.setProperty("-tb", "TestBase");
@@ -153,10 +180,12 @@ public class ClParser {
         return map;
     }
 
-    protected String getParameterFor(Properties map, String name) {
+    protected String getParameterFor(Properties map, String name)
+    {
         String ret = map.getProperty(name);
 
-        if (ret == null) {
+        if (ret == null)
+        {
             ret = name.substring(1);
         }
 
diff --git a/qadevOOo/runner/helper/ComplexDescGetter.java b/qadevOOo/runner/helper/ComplexDescGetter.java
index 588183c..bfc328a 100644
--- a/qadevOOo/runner/helper/ComplexDescGetter.java
+++ b/qadevOOo/runner/helper/ComplexDescGetter.java
@@ -40,99 +40,120 @@ import share.LogWriter;
 /**
  *
  */
-public class ComplexDescGetter extends DescGetter {
+public class ComplexDescGetter extends DescGetter
+{
 
     ComplexTest testClass;
 
     /** Creates new ComplexDescGetter */
-    public ComplexDescGetter() {
+    public ComplexDescGetter()
+    {
         testClass = null;
     }
 
-    public DescEntry[] getDescriptionFor(String entry, String DescPath, 
-                                                            boolean debug) {
+    public DescEntry[] getDescriptionFor(String entry, String DescPath,
+            boolean debug)
+    {
         // read scenario file                                                            
-        if (entry.startsWith("-sce")) {
-            DescEntry[] entries = getScenario(entry.substring(5),null,debug);
+        if (entry.startsWith("-sce"))
+        {
+            DescEntry[] entries = getScenario(entry.substring(5), null, debug);
             return entries;
         }
         // one single job
-        else if (entry.startsWith("-o")) {
+        else if (entry.startsWith("-o"))
+        {
             DescEntry dEntry = getDescriptionForSingleJob(entry.substring(3), null, debug);
             if (dEntry != null)
-                return new DescEntry[] {dEntry};
+            {
+                return new DescEntry[]
+                        {
+                            dEntry
+                        };
+            }
         }
-        System.out.println("Could not get a testjob with parameter '"
-                            + entry +"'");
+        System.out.println("Could not get a testjob with parameter '" + entry + "'");
         // no job available
         return null;
     }
 
-        
-    protected DescEntry getDescriptionForSingleJob(String className, String descPath, boolean debug) {
+    protected DescEntry getDescriptionForSingleJob(String className, String descPath, boolean debug)
+    {
         DynamicClassLoader dcl = new DynamicClassLoader();
         String methodNames[] = null;
 
-        if (debug) {
+        if (debug)
+        {
             System.out.println("Searching Class: " + className);
         }
 
         int index = className.indexOf("::");
-        if (index != -1) {
+        if (index != -1)
+        {
             // case1: method()
             // case2: method(param1,param2)
             // case3: method1(param1,param2),method2(param1,param2)
             String method = className.substring(index + 2);
             className = className.substring(0, index);
             Vector methods = new Vector();
-            
+
             String[] split = method.split("(?<=\\)),(?=\\w+)");
-            
-            for (int i = 0; i < split.length; i++) {
+
+            for (int i = 0; i < split.length; i++)
+            {
                 String meth = split[i];
-                
-                if (meth.endsWith("()")) meth = meth.substring(0, meth.length() - 2);
-            
+
+                if (meth.endsWith("()"))
+                {
+                    meth = meth.substring(0, meth.length() - 2);
+                }
+
                 methods.add(meth);
             }
-            
+
             methodNames = new String[methods.size()];
-            methodNames = (String[])methods.toArray(methodNames);
+            methodNames = (String[]) methods.toArray(methodNames);
         }
-            
+
         // create an instance
-        try {
-            testClass = (ComplexTestCase)dcl.getInstance(className);
+        try
+        {
+            testClass = (ComplexTestCase) dcl.getInstance(className);
         }
-        catch(java.lang.IllegalArgumentException e) {
-            System.out.println("Error while getting description for test '" +className + "' as a Complex test.");
+        catch (java.lang.IllegalArgumentException e)
+        {
+            System.out.println("Error while getting description for test '" + className + "' as a Complex test.");
             return null;
         }
-        catch(java.lang.ClassCastException e) {
-            System.out.println("The given class '" +className + "' is not a Complex test.");
+        catch (java.lang.ClassCastException e)
+        {
+            System.out.println("The given class '" + className + "' is not a Complex test.");
             return null;
         }
-        
 
-        if (debug) {
-            System.out.println("Got test: "+((Object)testClass).toString());   
+
+        if (debug)
+        {
+            System.out.println("Got test: " + ((Object) testClass).toString());
         }
-        
+
         String testObjectName = className;
         String[] testMethodNames = null;
-        
-        if (testMethodNames == null){
+
+        if (testMethodNames == null)
+        {
             testMethodNames = testClass.getTestMethodNames();
         }
-        if (methodNames != null) {
+        if (methodNames != null)
+        {
             testMethodNames = methodNames;
         }
-        
+
         DescEntry dEntry = createTestDesc(testObjectName, className, testMethodNames, null);
 
-        return dEntry;                                                    
+        return dEntry;
     }
-    
+
     /**
      * Creates a description exntry for the given parameter
      * @param testObjectName the name of the object
@@ -141,10 +162,11 @@ public class ComplexDescGetter extends DescGetter {
      * @param log 
      * @return filled description entry
      */
-    public DescEntry createTestDesc(String testObjectName, String className, String[] testMethodNames, LogWriter log){
+    public DescEntry createTestDesc(String testObjectName, String className, String[] testMethodNames, LogWriter log)
+    {
 
         DescEntry dEntry = new DescEntry();
-        
+
         dEntry.entryName = testObjectName;
         dEntry.longName = className;
         dEntry.isOptional = false;
@@ -153,10 +175,11 @@ public class ComplexDescGetter extends DescGetter {
         dEntry.Logger = log;
         dEntry.SubEntryCount = testMethodNames.length;
         dEntry.SubEntries = new DescEntry[dEntry.SubEntryCount];
-        for (int i=0; i<dEntry.SubEntryCount; i++) {
+        for (int i = 0; i < dEntry.SubEntryCount; i++)
+        {
             DescEntry aEntry = new DescEntry();
             aEntry.entryName = testMethodNames[i];
-            aEntry.longName = testObjectName +"::" + aEntry.entryName;
+            aEntry.longName = testObjectName + "::" + aEntry.entryName;
             aEntry.isOptional = false;
             aEntry.EntryType = "method";
             aEntry.isToTest = true;
@@ -164,11 +187,11 @@ public class ComplexDescGetter extends DescGetter {
             dEntry.Logger = log;
         }
 
-        return dEntry;                                                    
+        return dEntry;
     }
-        
-    protected String[] createScenario(String descPath, String job, boolean debug) {
-        return new String[]{};
+
+    protected String[] createScenario(String descPath, String job, boolean debug)
+    {
+        return new String[] {};
     }
-    
 }
diff --git a/qadevOOo/runner/helper/OfficeProvider.java b/qadevOOo/runner/helper/OfficeProvider.java
index abcd280..1016811 100644
--- a/qadevOOo/runner/helper/OfficeProvider.java
+++ b/qadevOOo/runner/helper/OfficeProvider.java
@@ -59,7 +59,8 @@ import util.utils;
  * This class will connect the office and start it if possible
  *
  */
-public class OfficeProvider implements AppProvider {
+public class OfficeProvider implements AppProvider
+{
 
     protected static boolean debug = false;
 
@@ -68,8 +69,10 @@ public class OfficeProvider implements AppProvider {
      * @param param
      * @param msf
      */
-    public void backupUserLayer(TestParameters param, XMultiServiceFactory msf) {
-        try {
+    public void backupUserLayer(TestParameters param, XMultiServiceFactory msf)
+    {
+        try
+        {
             final XStringSubstitution sts = createStringSubstitution(msf);
             debug = param.getBool(PropertyName.DEBUG_IS_ACTIVE);
 
@@ -78,8 +81,8 @@ public class OfficeProvider implements AppProvider {
             param.put("userLayer", userLayer);
 
             final String copyLayer = util.utils.getUsersTempDir() + System.getProperty("file.separator") +
-                "user_backup" +
-                System.getProperty("user.name");
+                    "user_backup" +
+                    System.getProperty("user.name");
             param.put("copyLayer", copyLayer);
 
 
@@ -88,13 +91,20 @@ public class OfficeProvider implements AppProvider {
             OfficeWatcherPing owp = new OfficeWatcherPing((OfficeWatcher) param.get(PropertyName.OFFICE_WATCHER));
             owp.start();
 
-            FileTools.copyDirectory(new File(userLayer), new File(copyLayer), new String[]{"temp"});
+            FileTools.copyDirectory(new File(userLayer), new File(copyLayer), new String[]
+                    {
+                        "temp"
+                    });
 
             owp.finish();
 
-        } catch (com.sun.star.container.NoSuchElementException e) {
+        }
+        catch (com.sun.star.container.NoSuchElementException e)
+        {
             System.out.println("User Variable '$(user)' not defined.");
-        } catch (java.io.IOException e) {
+        }
+        catch (java.io.IOException e)
+        {
             System.out.println("Couldn't backup user layer");
             e.printStackTrace();
         }
@@ -107,30 +117,40 @@ public class OfficeProvider implements AppProvider {
      * @param param
      * @return return true if desktop is terminates, else false
      */
-    public boolean disposeManager(lib.TestParameters param) {
+    public boolean disposeManager(lib.TestParameters param)
+    {
 
         XMultiServiceFactory msf = (XMultiServiceFactory) param.getMSF();
 
-        if (msf == null) {
+        if (msf == null)
+        {
             return true;
-        } else {
+        }
+        else
+        {
             XDesktop desk = null;
 
-            try {
+            try
+            {
                 desk = (XDesktop) UnoRuntime.queryInterface(XDesktop.class,
-                    msf.createInstance(
-                    "com.sun.star.frame.Desktop"));
-            } catch (com.sun.star.uno.Exception ue) {
+                        msf.createInstance(
+                        "com.sun.star.frame.Desktop"));
+            }
+            catch (com.sun.star.uno.Exception ue)
+            {
                 return false;
             }
 
             msf = null;
 
-            if (desk != null) {
+            if (desk != null)
+            {
                 desk.terminate();
 
                 return true;
-            } else {
+            }
+            else
+            {
                 return false;
             }
         }
@@ -138,23 +158,29 @@ public class OfficeProvider implements AppProvider {
 
     /**
      * Method to get the ServiceManager of an Office
+     * @param param
+     * @return
      */
-    public Object getManager(lib.TestParameters param) {
+    public Object getManager(lib.TestParameters param)
+    {
         String errorMessage = null;
         boolean bAppExecutionHasWarning = false;
         debug = param.getBool(PropertyName.DEBUG_IS_ACTIVE);
 
         String additionalArgs = (String) param.get(
-            "AdditionalConnectionArguments");
+                "AdditionalConnectionArguments");
 
-        if (additionalArgs == null) {
+        if (additionalArgs == null)
+        {
             additionalArgs = ";";
-        } else {
+        }
+        else
+        {
             additionalArgs = "," + additionalArgs + ";";
         }
 
         final String cncstr = "uno:" + param.get("ConnectionString") + ";urp" +
-            additionalArgs + "StarOffice.ServiceManager";
+                additionalArgs + "StarOffice.ServiceManager";
 
         System.out.println("Connecting the Office with " + cncstr);
 
@@ -165,25 +191,29 @@ public class OfficeProvider implements AppProvider {
         // Example: The UNO-API-Tests in the projects will be executed by calling
         // 'damke'. This connects to an existing office. If the office crashes 
         // it is usefull to restart the office and continuing the tests.
-        if ((param.getBool(util.PropertyName.AUTO_RESTART)) && (msf != null)) {
+        if ((param.getBool(util.PropertyName.AUTO_RESTART)) && (msf != null))
+        {
             makeAppExecCommand(msf, param);
         }
 
-        if (msf == null) {
+        if (msf == null)
+        {
             String exc = "";
             Exception exConnectFailed = null;
             boolean isExecutable = false;
             boolean isAppKnown = ((cncstr.indexOf("host=localhost") > 0) || (cncstr.indexOf("pipe,name=") > 0));
             isAppKnown &= !((String) param.get("AppExecutionCommand")).equals("");
 
-            if (isAppKnown) {
+            if (isAppKnown)
+            {
                 dbg("Local Connection trying to start the Office");
 
                 //ensure that a pending officewatcher gets finished before a new
                 //office is started
                 final OfficeWatcher ow_old = (OfficeWatcher) param.get("Watcher");
 
-                if (ow_old != null) {
+                if (ow_old != null)
+                {
                     ow_old.finish = true;
                 }
 
@@ -192,8 +222,9 @@ public class OfficeProvider implements AppProvider {
                 // validate the AppExecutionCommand, but try it out anyway.
                 // keep the error message for later.
                 errorMessage =
-                    util.utils.validateAppExecutionCommand(cmd, (String) param.get("OperatingSystem"));
-                if (errorMessage.startsWith("Error")) {
+                        util.utils.validateAppExecutionCommand(cmd, (String) param.get("OperatingSystem"));
+                if (errorMessage.startsWith("Error"))
+                {
                     System.out.println(errorMessage);
                     return null;
                 }
@@ -201,7 +232,7 @@ public class OfficeProvider implements AppProvider {
 
                 final DynamicClassLoader dcl = new DynamicClassLoader();
                 final LogWriter log = (LogWriter) dcl.getInstance(
-                    (String) param.get("LogWriter"));
+                        (String) param.get("LogWriter"));
 
                 //create empty entry
                 final DescEntry Entry = new DescEntry();
@@ -220,7 +251,8 @@ public class OfficeProvider implements AppProvider {
                 final ProcessHandler ph = new ProcessHandler(cmd, (PrintWriter) log);
                 isExecutable = ph.executeAsynchronously();
 
-                if (isExecutable) {
+                if (isExecutable)
+                {
                     param.put("AppProvider", ph);
                     final OfficeWatcher ow = new OfficeWatcher(param);
                     param.put("Watcher", ow);
@@ -253,31 +285,39 @@ public class OfficeProvider implements AppProvider {
                         {
                             Thread.sleep(k * 500);
                         }
-                        catch (InterruptedException ex){ }
-                     }
+                        catch (InterruptedException ex)
+                        {
+                        }
+                    }
                     k++;
                 }
 
-                if (msf == null) {
+                if (msf == null)
+                {
                     System.out.println("Exception while connecting.\n" + exConnectFailed);
-                    if (exc != null) {
+                    if (exc != null)
+                    {
                         System.out.println(exc);
                     }
-                    if (bAppExecutionHasWarning) {
+                    if (bAppExecutionHasWarning)
+                    {
                         System.out.println(errorMessage);
                     }
-                } else if (isExecutable)
+                }
+                else if (isExecutable)
                 {
-                    if (! param.getBool(util.PropertyName.DONT_BACKUP_USERLAYER))
+                    if (!param.getBool(util.PropertyName.DONT_BACKUP_USERLAYER))
                     {
                         backupUserLayer(param, msf);
                     }
                 }
-            } else {
-                System.out.println("Could not connect an Office and cannot start one.\n".
-                        concat("please start an office with following parameter:\n").
+            }
+            else
+            {
+                System.out.println("Could not connect an Office and cannot start one.\n".concat("please start an office with following parameter:\n").
                         concat("\nsoffice -accept=").concat((String) param.get("ConnectionString")).concat(";urp;\n"));
-                if (bAppExecutionHasWarning) {
+                if (bAppExecutionHasWarning)
+                {
                     System.out.println(errorMessage);
                 }
             }
@@ -288,16 +328,23 @@ public class OfficeProvider implements AppProvider {
 
     /**
      * Connect an Office
+     * @param connectStr
+     * @return
+     * @throws com.sun.star.uno.Exception
+     * @throws com.sun.star.uno.RuntimeException
+     * @throws com.sun.star.connection.NoConnectException
+     * @throws Exception
      */
     protected static XMultiServiceFactory connect(String connectStr)
-        throws com.sun.star.uno.Exception,
-        com.sun.star.uno.RuntimeException,
-        com.sun.star.connection.NoConnectException,
-        Exception {
+            throws com.sun.star.uno.Exception,
+            com.sun.star.uno.RuntimeException,
+            com.sun.star.connection.NoConnectException,
+            Exception
+    {
 
         // Get component context
         final XComponentContext xcomponentcontext = com.sun.star.comp.helper.Bootstrap.createInitialComponentContext(
-            null);
+                null);
 
         // initial serviceManager
         final XMultiComponentFactory xLocalServiceManager = xcomponentcontext.getServiceManager();
@@ -305,20 +352,21 @@ public class OfficeProvider implements AppProvider {
         // create a connector, so that it can contact the office
 //        XUnoUrlResolver urlResolver = UnoUrlResolver.create(xcomponentcontext);
         final Object xUrlResolver = xLocalServiceManager.createInstanceWithContext(
-            "com.sun.star.bridge.UnoUrlResolver", xcomponentcontext);
+                "com.sun.star.bridge.UnoUrlResolver", xcomponentcontext);
         final XUnoUrlResolver urlResolver = (XUnoUrlResolver) UnoRuntime.queryInterface(
-            XUnoUrlResolver.class, xUrlResolver);
+                XUnoUrlResolver.class, xUrlResolver);
 
         final Object rInitialObject = urlResolver.resolve(connectStr);
 
         XMultiServiceFactory xMSF = null;
 
-        if (rInitialObject != null) {
+        if (rInitialObject != null)
+        {
             debug = true;
             dbg("resolved url");
 
             xMSF = (XMultiServiceFactory) UnoRuntime.queryInterface(
-                XMultiServiceFactory.class, rInitialObject);
+                    XMultiServiceFactory.class, rInitialObject);
         }
 
         return xMSF;
@@ -330,18 +378,21 @@ public class OfficeProvider implements AppProvider {
      * @param closeIfPossible If true, close even if
      * it was running before the test
      */
-    public boolean closeExistingOffice(lib.TestParameters param, boolean closeIfPossible) {
+    public boolean closeExistingOffice(lib.TestParameters param, boolean closeIfPossible)
+    {
 
         XMultiServiceFactory msf = (XMultiServiceFactory) param.getMSF();
         final boolean alreadyConnected = (msf != null);
         debug = param.getBool(PropertyName.DEBUG_IS_ACTIVE);
-        
-        if (alreadyConnected) {
+
+        if (alreadyConnected)
+        {
             dbg("try to get ProcessHandler");
 
             final ProcessHandler ph = (ProcessHandler) param.get("AppProvider");
 
-            if (ph != null) {
+            if (ph != null)
+            {
                 dbg("ProcessHandler != null");
 
                 disposeOffice(msf, param);
@@ -351,26 +402,35 @@ public class OfficeProvider implements AppProvider {
 
                 final OfficeWatcher ow = (OfficeWatcher) param.get("Watcher");
 
-                if ((ow != null) && ow.isAlive()) {
+                if ((ow != null) && ow.isAlive())
+                {
                     dbg("OfficeWatcher will be finished");
                     ow.finish = true;
-                } else {
+                }
+                else
+                {
                     dbg("OfficeWatcher seems to be finished");
                 }
 
                 return true;
-            } else {
-                if (closeIfPossible) {
+            }
+            else
+            {
+                if (closeIfPossible)
+                {
                     return disposeOffice(msf, param);
                 }
             }
-        } else {
+        }
+        else
+        {
             final String cncstr = "uno:" + param.get("ConnectionString") +
-                ";urp;StarOffice.ServiceManager";
+                    ";urp;StarOffice.ServiceManager";
             dbg("try to connect office");
             msf = connectOffice(cncstr);
 
-            if (closeIfPossible) {
+            if (closeIfPossible)
+            {
                 return disposeOffice(msf, param);
             }
         }
@@ -378,23 +438,31 @@ public class OfficeProvider implements AppProvider {
         return true;
     }
 
-    private XMultiServiceFactory connectOffice(String cncstr) {
+    private XMultiServiceFactory connectOffice(String cncstr)
+    {
         XMultiServiceFactory msf = null;
         String exc = "";
         debug = true;
 
         dbg("trying to connect to " + cncstr);
 
-        try {
+        try
+        {
             msf = connect(cncstr);
-        } catch (com.sun.star.uno.Exception ue) {
+        }
+        catch (com.sun.star.uno.Exception ue)
+        {
             exc = ue.getMessage();
-        } catch (java.lang.Exception je) {
+        }
+        catch (java.lang.Exception je)
+        {
             exc = je.getMessage();
         }
 
-        if (debug && exc != null && exc.length() != 0) {
-            if (exc == null) {
+        if (debug && exc != null && exc.length() != 0)
+        {
+            if (exc == null)
+            {
                 exc = "";
             }
             dbg("Could not connect an Office. " + exc);
@@ -404,34 +472,42 @@ public class OfficeProvider implements AppProvider {
     }
 
     private synchronized boolean disposeOffice(XMultiServiceFactory msf,
-        TestParameters param) {
+            TestParameters param)
+    {
         XDesktop desk = null;
 
         debug = param.getBool(PropertyName.DEBUG_IS_ACTIVE);
 
         boolean result = true;
 
-        if (msf != null) {
-            
+        if (msf != null)
+        {
+
             // disable QuickStarter
-            try {
+            try
+            {
                 Object quickStarter = msf.createInstance("com.sun.star.office.Quickstart");
                 XFastPropertySet fps = (XFastPropertySet) UnoRuntime.queryInterface(XFastPropertySet.class, quickStarter);
                 fps.setFastPropertyValue(0, false);
-            } catch (com.sun.star.uno.Exception ex) {
+            }
+            catch (com.sun.star.uno.Exception ex)
+            {
                 dbg("ERROR: Could not disable QuickStarter: " + ex.toString());
             }
-            
-            try {
+
+            try
+            {
                 desk = (XDesktop) UnoRuntime.queryInterface(XDesktop.class,
-                    msf.createInstance(
-                    "com.sun.star.frame.Desktop"));
+                        msf.createInstance(
+                        "com.sun.star.frame.Desktop"));
                 msf = null;
 
-                if (desk != null) {
+                if (desk != null)
+                {
                     final boolean allClosed = closeAllWindows(desk);
 
-                    if (!allClosed) {
+                    if (!allClosed)
+                    {
                         dbg("Couldn't close all office windows!");
                     }
 
@@ -440,16 +516,23 @@ public class OfficeProvider implements AppProvider {
                     desk.terminate();
                     dbg("Desktop terminated");
 
-                    try {
+                    try
+                    {
                         final int closeTime = param.getInt(util.PropertyName.OFFICE_CLOSE_TIME_OUT);
                         dbg("the Office has " + closeTime / 1000 + " seconds for closing...");
                         Thread.sleep(closeTime);
-                    } catch (java.lang.InterruptedException e) {
+                    }
+                    catch (java.lang.InterruptedException e)
+                    {
                     }
                 }
-            } catch (com.sun.star.uno.Exception ue) {
+            }
+            catch (com.sun.star.uno.Exception ue)
+            {
                 result = false;
-            } catch (com.sun.star.lang.DisposedException ue) {
+            }
+            catch (com.sun.star.lang.DisposedException ue)
+            {
                 result = false;
             }
         }
@@ -473,11 +556,13 @@ public class OfficeProvider implements AppProvider {
 
         final ProcessHandler ph = (ProcessHandler) param.get("AppProvider");
 
-        if (ph != null) {
+        if (ph != null)
+        {
             // dispose watcher in case it's still running.
             final OfficeWatcher ow = (OfficeWatcher) param.get("Watcher");
 
-            if ((ow != null) && ow.isAlive()) {
+            if ((ow != null) && ow.isAlive())
+            {
                 ow.finish = true;
             }
 
@@ -487,17 +572,21 @@ public class OfficeProvider implements AppProvider {
         param.remove("AppProvider");
         param.remove("ServiceFactory");
 
-        if (! param.getBool(util.PropertyName.DONT_BACKUP_USERLAYER))
+        if (!param.getBool(util.PropertyName.DONT_BACKUP_USERLAYER))
         {
             //copy user_backup into user layer
-            try {
+            try
+            {
                 final String userLayer = (String) param.get("userLayer");
                 final String copyLayer = (String) param.get("copyLayer");
                 if (userLayer != null && copyLayer != null)
                 {
                     final File copyFile = new File(copyLayer);
                     dbg("copy '" + copyFile + "' -> '" + userLayer + "'");
-                    FileTools.copyDirectory(copyFile, new File(userLayer), new String[]{"temp"});
+                    FileTools.copyDirectory(copyFile, new File(userLayer), new String[]
+                            {
+                                "temp"
+                            });
                     dbg("copy '" + copyFile + "' -> '" + userLayer + "' finished");
 
                 // remove all user_backup folder in temp dir
@@ -518,46 +607,63 @@ public class OfficeProvider implements AppProvider {
         return result;
     }
 
-    protected boolean closeAllWindows(XDesktop desk) {
+    protected boolean closeAllWindows(XDesktop desk)
+    {
         final XEnumerationAccess compEnumAccess = desk.getComponents();
         final XEnumeration compEnum = compEnumAccess.createEnumeration();
         boolean res = true;
 
-        try {
-            while (compEnum.hasMoreElements()) {
+        try
+        {
+            while (compEnum.hasMoreElements())
+            {
                 final XCloseable closer = (XCloseable) UnoRuntime.queryInterface(
-                    XCloseable.class,
-                    compEnum.nextElement());
+                        XCloseable.class,
+                        compEnum.nextElement());
 
-                if (closer != null) {
+                if (closer != null)
+                {
                     closer.close(true);
                 }
             }
-        } catch (com.sun.star.util.CloseVetoException cve) {
+        }
+        catch (com.sun.star.util.CloseVetoException cve)
+        {
             res = false;
-        } catch (com.sun.star.container.NoSuchElementException nsee) {
+        }
+        catch (com.sun.star.container.NoSuchElementException nsee)
+        {
             res = false;
-        } catch (com.sun.star.lang.WrappedTargetException wte) {
+        }
+        catch (com.sun.star.lang.WrappedTargetException wte)
+        {
             res = false;
         }
 
         return res;
     }
 
-    public static XStringSubstitution createStringSubstitution(XMultiServiceFactory xMSF) {
+    public static XStringSubstitution createStringSubstitution(XMultiServiceFactory xMSF)
+    {
         Object xPathSubst = null;
 
-        try {
+        try
+        {
             xPathSubst = xMSF.createInstance(
-                "com.sun.star.util.PathSubstitution");
-        } catch (com.sun.star.uno.Exception e) {
+                    "com.sun.star.util.PathSubstitution");
+        }
+        catch (com.sun.star.uno.Exception e)
+        {
             e.printStackTrace();
         }
 
-        if (xPathSubst != null) {
+        if (xPathSubst != null)
+        {
             return (XStringSubstitution) UnoRuntime.queryInterface(
-                XStringSubstitution.class, xPathSubst);
-        } else {
+                    XStringSubstitution.class, xPathSubst);
+        }
+        else
+        {
             return null;
         }
     }
@@ -565,8 +671,11 @@ public class OfficeProvider implements AppProvider {
     /**
      * converts directory without 'file:///' prefix.
      * and System dependend file separator
+     * @param dir
+     * @return
      */
-    public static String getDirSys(String dir) {
+    public static String getDirSys(String dir)
+    {
         String sysDir = "";
 
         final int idx = dir.indexOf("file://");
@@ -574,26 +683,34 @@ public class OfficeProvider implements AppProvider {
         final int idx2 = dir.indexOf("file:///");
 
         // remove leading 'file://'
-        if (idx < 0) {
+        if (idx < 0)
+        {
             sysDir = dir;
-        } else {
+        }
+        else
+        {
             sysDir = dir.substring("file://".length());
         }
 
         sysDir = utils.replaceAll13(sysDir, "%20", " ");
 
         // append '/' if not there (e.g. linux)
-        if (sysDir.charAt(sysDir.length() - 1) != '/') {
+        if (sysDir.charAt(sysDir.length() - 1) != '/')
+        {
             sysDir += "/";
         }
 
         // remove leading '/' and replace others with '\' on windows machines
         final String sep = System.getProperty("file.separator");
 
-        if (sep.equalsIgnoreCase("\\")) {
-            if (!(idx2 < 0)) {
+        if (sep.equalsIgnoreCase("\\"))
+        {
+            if (!(idx2 < 0))
+            {
                 sysDir = sysDir.substring(1);
-            } else {
+            }
+            else
+            {
                 //network path
                 sysDir = "//" + sysDir;
             }
@@ -611,27 +728,42 @@ public class OfficeProvider implements AppProvider {
      * @param msf the <CODE>MultiServiceFactory</CODE>
      * @param param the <CODE>TestParameters</CODE>
      */
-    private static void makeAppExecCommand(XMultiServiceFactory msf, TestParameters param) {
+    private static void makeAppExecCommand(XMultiServiceFactory msf, TestParameters param)
+    {
         debug = param.getBool(PropertyName.DEBUG_IS_ACTIVE);
 
         // get existing AppExecutionCommand if available, else empty string
         String command = (String) param.get(util.PropertyName.APP_EXECUTION_COMMAND);
 
-        final String connectionString = (String) param.get(util.PropertyName.CONNECTION_STRING);
+        String connectionString;
+        if (param.getBool(util.PropertyName.USE_PIPE_CONNECTION) == true)
+        {
+            // This is the default behaviour
+            connectionString = (String) param.get(util.PropertyName.PIPE_CONNECTION_STRING);
+        }
+        else
+        {
+            // is used if UsePipeConnection=false
+            connectionString = (String) param.get(util.PropertyName.CONNECTION_STRING);
+        }
 
         String sysBinDir = "";
 
-        try {
+        try
+        {
             sysBinDir = utils.getSystemURL(utils.expandMacro(msf, "$SYSBINDIR"));
-        } catch (java.lang.Exception e) {
+        }
+        catch (java.lang.Exception e)
+        {
             dbg("could not get system binary directory");
             return;
         }
 
         // does the existing command show to the connected office?
-        if (command.indexOf(sysBinDir) == -1) {
+        if (command.indexOf(sysBinDir) == -1)
+        {
             command = sysBinDir + System.getProperty("file.separator") + "soffice" +
-                " -norestore -accept=" + connectionString + ";urp;";
+                    " -norestore -accept=" + connectionString + ";urp;";
         }
 
         dbg("update AppExecutionCommand: " + command);
@@ -639,43 +771,54 @@ public class OfficeProvider implements AppProvider {
         param.put(util.PropertyName.APP_EXECUTION_COMMAND, command);
     }
 
-    private static void dbg(String message) {
-        if (debug) {
+    private static void dbg(String message)
+    {
+        if (debug)
+        {
             System.out.println(utils.getDateTime() + "OfficeProvider: " + message);
         }
 
     }
 
-    private class OfficeWatcherPing extends Thread {
+    private class OfficeWatcherPing extends Thread
+    {
 
         private final OfficeWatcher ow;
         private boolean bStop = false;
 
-        public OfficeWatcherPing(OfficeWatcher ow) {
+        public OfficeWatcherPing(OfficeWatcher ow)
+        {
             this.ow = ow;
         }
 
-        public void run() {
+        public void run()
+        {
             System.out.println(utils.getDateTime() + "OfficeProvider:Owp: start ");
 
-            while (!bStop) {
-                    System.out.println(utils.getDateTime() + "OfficeProvider:Owp: ping ");
-                    ow.ping();
-                try {
+            while (!bStop)
+            {
+                System.out.println(utils.getDateTime() + "OfficeProvider:Owp: ping ");
+                ow.ping();
+                try
+                {
                     System.out.println(utils.getDateTime() + "OfficeProvider:Owp: sleep ");
                     OfficeWatcherPing.sleep(1000); // 5000
-                } catch (InterruptedException ex) {
+                }
+                catch (InterruptedException ex)
+                {
                     ex.printStackTrace();
                 }
             }
 
         }
 
-        public void finish() {
-            synchronized (this) {
+        public void finish()
+        {
+            synchronized(this)
+            {
                 bStop = true;
-                    System.out.println(utils.getDateTime() + "OfficeProvider:Owp: stop ");
-                
+                System.out.println(utils.getDateTime() + "OfficeProvider:Owp: stop ");
+
                 notify();
             }
         }
diff --git a/qadevOOo/runner/helper/ProcessHandler.java b/qadevOOo/runner/helper/ProcessHandler.java
index fef1f4d..1f027ad 100644
--- a/qadevOOo/runner/helper/ProcessHandler.java
+++ b/qadevOOo/runner/helper/ProcessHandler.java
@@ -51,7 +51,8 @@ import util.utils;
  * This class is currently used by ProcesHandler
  * internally only.
  */
-class Pump extends Thread {
+class Pump extends Thread
+{
 
     private LineNumberReader reader;
     private String pref;
@@ -69,23 +70,29 @@ class Pump extends Thread {
      * @param outPrefix A prefix which is printed at the
      *   beginning of each output line.
      */
-    public Pump(InputStream is, PrintWriter log, String outPrefix) {
-        this.pref = outPrefix == null ? "" : outPrefix;
+    public Pump(InputStream is, PrintWriter log, String outPrefix)
+    {
+        this.pref = (outPrefix == null) ? "" : outPrefix;
         reader = new LineNumberReader(new InputStreamReader(is));
         this.log = log;
         start();
     }
 
-    public void run() {
-        try {
+    public void run()
+    {
+        try
+        {
             String line = reader.readLine();
-            while (line != null) {
+            while (line != null)
+            {
                 log.println(pref + line);
                 log.flush();
                 buf.append(line).append('\n');
                 line = reader.readLine();
             }
-        } catch (java.io.IOException e) {
+        }
+        catch (java.io.IOException e)
+        {
             log.println(pref + "Exception occured: " + e);
         }
     }
@@ -93,7 +100,8 @@ class Pump extends Thread {
     /**
      * Returns the text collected from input stream.
      */
-    public String getStringBuffer() {
+    public String getStringBuffer()
+    {
         return buf.toString();
     }
 }
@@ -105,7 +113,8 @@ class Pump extends Thread {
  * execution. If you need to execute the same command again you
  * should create a new instance for this.
  */
-public class ProcessHandler {
+public class ProcessHandler
+{
 
     private String cmdLine;
     private String[] cmdLineArray;
@@ -121,7 +130,7 @@ public class ProcessHandler {
     private Pump stdout = null;
     private Pump stderr = null;
     private PrintStream stdIn = null;
-    private Process proc = null;
+    private Process m_aProcess = null;
     private TestParameters param = null;
     private boolean debug = false;
 
@@ -131,7 +140,8 @@ public class ProcessHandler {
      * of external command is printed to stdout.
      * @param cmdLine 
      */
-    public ProcessHandler(String cmdLine) {
+    public ProcessHandler(String cmdLine)
+    {
         this(cmdLine, null, null, null, 0);
     }
 
@@ -142,7 +152,8 @@ public class ProcessHandler {
      * of external command is printed to stdout.
      * @param cmdLines 
      */
-    public ProcessHandler(String[] cmdLines) {
+    public ProcessHandler(String[] cmdLines)
+    {
         this(null, null, null, null, 0);
         cmdLineArray = cmdLines;
     }
@@ -157,7 +168,8 @@ public class ProcessHandler {
      * @param envVars 
      * @see java.lang.Runtime exec(String[], String[])
      */
-    public ProcessHandler(String[] cmdLines, String[] envVars) {
+    public ProcessHandler(String[] cmdLines, String[] envVars)
+    {
         this(null, null, null, envVars, 0);
         cmdLineArray = cmdLines;
     }
@@ -171,7 +183,8 @@ public class ProcessHandler {
      * @param cmdLines 
      * @param workDir 
      */
-    public ProcessHandler(String[] cmdLines, File workDir) {
+    public ProcessHandler(String[] cmdLines, File workDir)
+    {
         this(null, null, workDir, null, 0);
         cmdLineArray = cmdLines;
 
@@ -185,7 +198,8 @@ public class ProcessHandler {
      * @param log 
      * @param workDir 
      */
-    public ProcessHandler(String[] cmdLines, PrintWriter log, File workDir) {
+    public ProcessHandler(String[] cmdLines, PrintWriter log, File workDir)
+    {
         this(null, log, workDir, null, 0);
         cmdLineArray = cmdLines;
     }
@@ -197,7 +211,8 @@ public class ProcessHandler {
      * @param cmdLine
      * @param log 
      */
-    public ProcessHandler(String cmdLine, PrintWriter log) {
+    public ProcessHandler(String cmdLine, PrintWriter log)
+    {
         this(cmdLine, log, null, null, 0);
     }
 
@@ -206,7 +221,8 @@ public class ProcessHandler {
      * @param cmdLine
      * @param timeOut 
      */
-    public ProcessHandler(String cmdLine, int timeOut) {
+    public ProcessHandler(String cmdLine, int timeOut)
+    {
         this(cmdLine, null, null, null, timeOut);
     }
 
@@ -218,7 +234,8 @@ public class ProcessHandler {
      * @param cmdLine
      * @param workDir 
      */
-    public ProcessHandler(String cmdLine, File workDir) {
+    public ProcessHandler(String cmdLine, File workDir)
+    {
         this(cmdLine, null, workDir, null, 0);
     }
 
@@ -230,7 +247,8 @@ public class ProcessHandler {
      * @param log
      * @param workDir 
      */
-    public ProcessHandler(String cmdLine, PrintWriter log, File workDir) {
+    public ProcessHandler(String cmdLine, PrintWriter log, File workDir)
+    {
         this(cmdLine, log, workDir, null, 0);
     }
 
@@ -246,7 +264,8 @@ public class ProcessHandler {
      * @param workDir 
      * @param envVars 
      */
-    public ProcessHandler(String cmdLine, PrintWriter log, File workDir, String[] envVars) {
+    public ProcessHandler(String cmdLine, PrintWriter log, File workDir, String[] envVars)
+    {
         this(cmdLine, log, workDir, envVars, 0);
     }
 
@@ -278,15 +297,19 @@ public class ProcessHandler {
      *
      *
      */
-    public ProcessHandler(String cmdLine, PrintWriter log, File workDir, String[] envVars, long timeOut) {
+    public ProcessHandler(String cmdLine, PrintWriter log, File workDir, String[] envVars, long timeOut)
+    {
         this.cmdLine = cmdLine;
         this.workDir = workDir;
         this.log = log;
         this.cmdLine = cmdLine;
         this.envVars = envVars;
-        if (log == null) {
+        if (log == null)
+        {
             this.log = new PrintWriter(new OutputStreamWriter(System.out));
-        } else {
+        }
+        else
+        {
             this.log = log;
         }
         this.mTimeOut = timeOut;
@@ -307,13 +330,17 @@ public class ProcessHandler {
      * @see lib.TestParameters
      * @see helper.OfficeWatcher
      */
-    public ProcessHandler(String[] commands, PrintWriter log, File workDir, int shortWait, TestParameters param) {
+    public ProcessHandler(String[] commands, PrintWriter log, File workDir, int shortWait, TestParameters param)
+    {
         this(null, log, workDir, null, 0);
         this.cmdLineArray = commands;
         this.param = param;
-        if (shortWait != 0) {
+        if (shortWait != 0)
+        {
             this.mTimeOut = shortWait;
-        } else {
+        }
+        else
+        {
             this.mTimeOut = (long) (param.getInt(PropertyName.TIME_OUT) / 1.3);
         }
         debug = param.getBool(PropertyName.DEBUG_IS_ACTIVE);
@@ -325,7 +352,8 @@ public class ProcessHandler {
      * caused by <CODE>OfficeWatcher</CODE>, the OfficeWatcher get frequently a ping.
      * @see helper.OfficeWatcher
      */
-    public void runCommand() {
+    public void runCommand()
+    {
 
         boolean changedText = true;
         int count = 0;
@@ -334,25 +362,31 @@ public class ProcessHandler {
         this.executeAsynchronously();
 
         OfficeWatcher ow = null;
-        if (param != null) {
+        if (param != null)
+        {
             ow = (OfficeWatcher) param.get(PropertyName.OFFICE_WATCHER);
         }
 
-        while (!this.isFinished() && changedText) {
+        while (!this.isFinished() && changedText)
+        {
             count++;
-            if (ow != null) {
+            if (ow != null)
+            {
                 ow.ping();
             }
             dbg("runCommand: waiting " + mTimeOut / 1000 + " seconds while command execution is ongoing... " + count);
             shortWait(mTimeOut);
             //waitFor(mTimeOut);
 
-            if (ow != null) {
+            if (ow != null)
+            {
                 ow.ping();
             }
             // check for changes in the output stream. If there are no changes, the process maybe hangs
-            if (!this.isFinished()) {
-                if (this.getOutputText().length() == memText.length()) {
+            if (!this.isFinished())
+            {
+                if (this.getOutputText().length() == memText.length())
+                {
                     changedText = false;
                     dbg("runCommand Could not detect changes in output stream!!!");
 
@@ -361,17 +395,20 @@ public class ProcessHandler {
             }
         }
 
-        if (!this.isFinished()) {
+        if (!this.isFinished())
+        {
             dbg("runCommand Process ist not finished but there are no changes in output stream.");
             this.kill();
         }
     }
 
-    public boolean isTimedOut() {
+    public boolean isTimedOut()
+    {
         return mbTimedOut;
     }
 
-    private void setTimedOut(boolean bTimedOut) {
+    private void setTimedOut(boolean bTimedOut)
+    {
         mbTimedOut = bTimedOut;
     }
 
@@ -383,7 +420,8 @@ public class ProcessHandler {
      * started and correcly exits (exit code doesn't affect
      * to this result).
      */
-    public boolean executeSynchronously() {
+    public boolean executeSynchronously()
+    {
         execute();
         return waitFor(mTimeOut);
     }
@@ -396,34 +434,48 @@ public class ProcessHandler {
      * @return <code>true</code> if process was successfully
      * started.
      */
-    public boolean executeAsynchronously() {
+    public boolean executeAsynchronously()
+    {
         execute();
         return isStarted();
     }
 
-    public synchronized void kill() {
-        if (!isStarted()) {
+    public synchronized void kill()
+    {
+        if (!isStarted())
+        {
             return;
         }
         boolean exit = false;
         int counter = 1;
-        while (counter < 3 && !exit) {
-            proc.destroy();
+        while (counter < 3 && !exit)
+        {
+            m_aProcess.destroy();
 
-            try {
+            try
+            {
                 Thread.sleep(1000 * counter); // 5000
-            } catch (java.lang.InterruptedException e) {
             }
-            try {
-                final int exit_Value = proc.exitValue();
-                if (exit_Value < 1) {
+            catch (java.lang.InterruptedException e)
+            {
+            }
+            try
+            {
+                final int exit_Value = m_aProcess.exitValue();
+                if (exit_Value < 1)
+                {
                     exit = true;
-                } else {
+                }
+                else
+                {
                     counter++;
                 }
                 dbg("kill: process closed with exit code " + exit_Value);
-            } catch (java.lang.IllegalThreadStateException e) {
-                if (counter < 3) {
+            }
+            catch (java.lang.IllegalThreadStateException e)
+            {
+                if (counter < 3)
+                {
                     dbg("kill: Couldn't close process after " + counter + " attempts, trying again");
                 }
                 counter++;
@@ -432,45 +484,63 @@ public class ProcessHandler {
         isStarted = false;
     }
 
-    protected void execute() {
-        if (isStarted()) {
+    protected void execute()
+    {
+        if (isStarted())
+        {
             throw new RuntimeException(
-                "The process handler has already been executed.");
+                    "The process handler has already been executed.");
         }
         final Runtime runtime = Runtime.getRuntime();
-        try {
-            if (cmdLine == null) {
+        try
+        {
+            if (cmdLine == null)
+            {
                 log.print(utils.getDateTime() + "execute: Starting command from array: ");
-                for (int i = 0; i < cmdLineArray.length; i++) {
+                for (int i = 0; i < cmdLineArray.length; i++)
+                {
                     log.print(cmdLineArray[i]);
                     log.print(" ");
                 }
                 log.println("");
 
-                proc = runtime.exec(cmdLineArray, envVars);
-            } else {
-                if (workDir != null) {
+                m_aProcess = runtime.exec(cmdLineArray, envVars);
+            }
+            else
+            {
+                if (workDir != null)
+                {
                     log.println(utils.getDateTime() + "execute: Starting command: " + cmdLine + " " +
-                        workDir.getAbsolutePath());
-                    proc = runtime.exec(cmdLine, envVars, workDir);
-                } else {
+                            workDir.getAbsolutePath());
+                    m_aProcess = runtime.exec(cmdLine, envVars, workDir);
+                }
+                else
+                {
                     log.println(utils.getDateTime() + "execute: Starting command: " + cmdLine);
-                    proc = runtime.exec(cmdLine, envVars);
+                    m_aProcess = runtime.exec(cmdLine, envVars);
                 }
             }
             isStarted = true;
-        } catch (java.io.IOException e) {
-            if (cmdLine == null) {
+        }
+        catch (java.io.IOException e)
+        {
+            if (cmdLine == null)
+            {
                 log.println(utils.getDateTime() + "execute: The command array can't be started: " + e);
-            } else {
+            }
+            else
+            {
                 log.println(utils.getDateTime() + "execute: The command " + cmdLine + " can't be started: " + e);
             }
             return;
         }
         dbg("execute: pump io-streams");
-        stdout = new Pump(proc.getInputStream(), log, "out > ");
-        stderr = new Pump(proc.getErrorStream(), log, "err > ");
-        stdIn = new PrintStream(proc.getOutputStream());
+        stdout = new Pump(m_aProcess.getInputStream(), log, "out > ");
+        stderr = new Pump(m_aProcess.getErrorStream(), log, "err > ");
+        stdIn = new PrintStream(m_aProcess.getOutputStream());
+
+        // int nExitValue = m_aProcess.exitValue();
+        // int dummy = 0;
 
         dbg("execute: flush io-streams");
 
@@ -485,7 +555,8 @@ public class ProcessHandler {
      * @return <code>true</code> if process correctly exited
      * (exit code doesn't affect to this result).
      */
-    public boolean waitFor() {
+    public boolean waitFor()
+    {
         return waitFor(0);
     }
 
@@ -507,49 +578,70 @@ public class ProcessHandler {
      * @return <code>true</code> if process correctly exited
      * (exit code doesn't affect to this result).
      */
-    public boolean waitFor(long timeout) {
-        if (isFinished()) {
+    public boolean waitFor(long timeout)
+    {
+        if (isFinished())
+        {
             return true;
         }
-        if (!isStarted()) {
+        if (!isStarted())
+        {
             return false;
         }
 
-        if (timeout == 0) {
-            try {
-                proc.waitFor();
-            } catch (InterruptedException e) {
+        if (timeout == 0)
+        {
+            try
+            {
+                m_aProcess.waitFor();
+            }
+            catch (InterruptedException e)
+            {
                 log.println("The process was interrupted: " + e);
             }
             isFinished = true;
-            try {
-                exitValue = proc.exitValue();
-            } catch (IllegalThreadStateException e) {
+            try
+            {
+                exitValue = m_aProcess.exitValue();
+            }
+            catch (IllegalThreadStateException e)
+            {
             }
-        } else {
-            try {
-                while (!isFinished && timeout > 0) {
+        }
+        else
+        {
+            try
+            {
+                while (!isFinished && timeout > 0)
+                {
                     isFinished = true;
                     Thread.sleep(1000);
                     timeout -= 1000;
-                    try {
-                        exitValue = proc.exitValue(); // throws exception if not finished
-                    } catch (IllegalThreadStateException e) {
+                    try
+                    {
+                        exitValue = m_aProcess.exitValue(); // throws exception if not finished
+                    }
+                    catch (IllegalThreadStateException e)
+                    {
                         isFinished = false;
                     }
                 }
-                if (timeout < 0) {
+                if (timeout < 0)
+                {
                     setTimedOut(true);
                     log.println("The process has timed out!");
                 }
-            } catch (InterruptedException ex) {
+            }
+            catch (InterruptedException ex)
+            {
                 log.println("The process was interrupted: " + ex);
             }
         }
 
-        if (!isFinished) {
+        if (!isFinished)
+        {
             log.println("Going to destroy the process!!");
-            proc.destroy();
+            m_aProcess.destroy();
             log.println("Process has been destroyed!");
         }
 //  Removed as hung up in SDK test 'PathSettings'
@@ -561,12 +653,15 @@ public class ProcessHandler {
         return isFinished();
     }
 
-    protected void flushInput() {
-        if (stdIn == null) {
+    protected void flushInput()
+    {
+        if (stdIn == null)
+        {
             return;
         }
 
-        synchronized (stdInBuff) {
+        synchronized(stdInBuff)
+        {
             stdIn.print(stdInBuff);
             stdIn.flush();
             stdInBuff = "";
@@ -577,10 +672,14 @@ public class ProcessHandler {
      * Returns the text output by external command to stdout.
      * @return the text output by external command to stdout
      */
-    public String getOutputText() {
-        if (stdout == null) {
+    public String getOutputText()
+    {
+        if (stdout == null)
+        {
             return "";
-        } else {
+        }
+        else
+        {
             return stdout.getStringBuffer();
         }
     }
@@ -589,10 +688,14 @@ public class ProcessHandler {
      * Returns the text output by external command to stderr.
      * @return the text output by external command to stderr
      */
-    public String getErrorText() {
-        if (stderr == null) {
+    public String getErrorText()
+    {
+        if (stderr == null)
+        {
             return "";
-        } else {
+        }
+        else
+        {
             return stderr.getStringBuffer();
         }
     }
@@ -607,7 +710,8 @@ public class ProcessHandler {
      * and transfered to command when it will be started.
      * @param str 
      */
-    public void printInputText(String str) {
+    public void printInputText(String str)
+    {
         stdInBuff += str;
         flushInput();
     }
@@ -619,7 +723,8 @@ public class ProcessHandler {
      * @return <code>true</code> if the external command was
      * found and successfully started.
      */
-    public boolean isStarted() {
+    public boolean isStarted()
+    {
         return isStarted;
     }
 
@@ -630,7 +735,8 @@ public class ProcessHandler {
      * @return <code>true</code> if the command correctly starts,
      * exits and was not interrupted due to timeout.
      */
-    public boolean isFinished() {
+    public boolean isFinished()
+    {
         return isFinished;
     }
 
@@ -640,11 +746,15 @@ public class ProcessHandler {
      * @return exit code of command if it was finished,
      * -1 if not.
      */
-    public int getExitCode() {
-        try {
-            exitValue = proc.exitValue();
-        } catch (Exception e) {
-        //System.out.println("No ExitValue available");
+    public int getExitCode()
+    {
+        try
+        {
+            exitValue = m_aProcess.exitValue();
+        }
+        catch (Exception e)
+        {
+            //System.out.println("No ExitValue available");
         }
 
         return exitValue;
@@ -653,16 +763,22 @@ public class ProcessHandler {
     /** Causes the thread to sleep some time.
      * @param milliseconds 
      */
-    public static void shortWait(long milliseconds) {
-        try {
+    public static void shortWait(long milliseconds)
+    {
+        try
+        {
             Thread.sleep(milliseconds);
-        } catch (InterruptedException e) {
+        }
+        catch (InterruptedException e)
+        {
             System.out.println("While waiting :" + e);
         }
     }
 
-    private void dbg(String message) {
-        if (debug) {
+    private void dbg(String message)
+    {
+        if (debug)
+        {
             log.println(utils.getDateTime() + "PH." + message);
         }
     }
diff --git a/qadevOOo/runner/lib/TestParameters.java b/qadevOOo/runner/lib/TestParameters.java
index 9a5f272..2176f46 100644
--- a/qadevOOo/runner/lib/TestParameters.java
+++ b/qadevOOo/runner/lib/TestParameters.java
@@ -258,8 +258,11 @@ public class TestParameters extends Hashtable {
     public TestParameters() {
         //fill the propertyset
         String user = System.getProperty("user.name");
-        if ( user != null) {
-            ConnectionString = "pipe,name=" + user;
+        if ( user != null)
+        {
+            String PipeConnectionString = "pipe,name=" + user;
+            put(PropertyName.PIPE_CONNECTION_STRING,PipeConnectionString);
+            put(PropertyName.USE_PIPE_CONNECTION, Boolean.TRUE);
         }
         put(PropertyName.CONNECTION_STRING,ConnectionString);
         put(PropertyName.TEST_BASE,TestBase);
diff --git a/qadevOOo/runner/org/openoffice/Runner.java b/qadevOOo/runner/org/openoffice/Runner.java
index c1f0fd9..ccead60 100644
--- a/qadevOOo/runner/org/openoffice/Runner.java
+++ b/qadevOOo/runner/org/openoffice/Runner.java
@@ -27,23 +27,25 @@
  * for a copy of the LGPLv3 License.
  *
  ************************************************************************/
-
 package org.openoffice;
 
+import java.util.Enumeration;
+import java.util.Properties;
+import java.util.StringTokenizer;
 import lib.TestParameters;
 import util.DynamicClassLoader;
 import base.TestBase;
 import helper.ClParser;
 import helper.CfgParser;
 
-
 /**
  * The main class, will call ClParser and CfgParser to <br>
  * fill the TestParameters.<br>
  * Will then call the appropriate Testbase to run the tests.
  */
 public class Runner
-{    
+{
+
     private static long m_nStartTime;
 
     private static long getStartTime()
@@ -51,30 +53,32 @@ public class Runner
         return m_nStartTime;
     }
     /*
-      simple helper functions to start/stop a timer, to know how long a process need in milliseconds
+    simple helper functions to start/stop a timer, to know how long a process need in milliseconds
      */
+
     private static long getTime()
-        {
-            return System.currentTimeMillis();
-        }
+    {
+        return System.currentTimeMillis();
+    }
+
     private static void setStartTime(long _nStartTime)
-        {
-            m_nStartTime = _nStartTime;
-        }
-    
+    {
+        m_nStartTime = _nStartTime;
+    }
+
     /*
-      return the time, which is done until last startTime()
+    return the time, which is done until last startTime()
      */
     private static long meanTime(long _nCurrentTimer)
+    {
+        if (_nCurrentTimer == 0)
         {
-            if (_nCurrentTimer == 0)
-            {
-                System.out.println("Forgotten to initialise a start timer?");
-                return 0;
-            }
-            long nMeanTime = getTime();
-            return nMeanTime - _nCurrentTimer;
+            System.out.println("Forgotten to initialise a start timer?");
+            return 0;
         }
+        long nMeanTime = getTime();
+        return nMeanTime - _nCurrentTimer;
+    }
 
     private static String beautifyTime(long _nTime)
     {
@@ -82,25 +86,117 @@ public class Runner
         long min = (_nTime / (60 * 1000)) % 60;
         long hour = _nTime / (60 * 60 * 1000);
         StringBuffer aTime = new StringBuffer();
-        aTime.append(helper.StringHelper.createValueString((int)hour, 2)).
-              append(':').
-              append(helper.StringHelper.createValueString((int)min, 2)).
-              append(':').
-              append(helper.StringHelper.createValueString((int)sec, 2));
+        aTime.append(helper.StringHelper.createValueString((int) hour, 2)).
+                append(':').
+                append(helper.StringHelper.createValueString((int) min, 2)).
+                append(':').
+                append(helper.StringHelper.createValueString((int) sec, 2));
         return aTime.toString();
     }
+
+    /**
+     Helper to check if there are problems with Cygwin Path variables.
+     */
+    private static boolean checkVariableForCygwin(String _sVariable)
+    {
+        if (_sVariable == null)
+        {
+            return false;
+        }
+        if (_sVariable.startsWith("/cygdrive"))
+        {
+            return true;
+        }
+        return false;
+    }
+    private static boolean checkPathVariable(String _sPath, String delim)
+    {
+        String sPath = System.getProperty(_sPath);
+        if (sPath != null)
+        {
+            StringTokenizer aTokenEnum = new StringTokenizer(sPath, delim);
+            while (aTokenEnum.hasMoreElements())
+            {
+                String sToken = (String)aTokenEnum.nextElement();
+                if (checkVariableForCygwin(sToken))
+                {
+                    System.err.println("ERROR: OOoRunner detect cygwin path in '" + _sPath + "'");
+                    return true;
+                }
+            }
+        }
+        return false;
+    }
+
+    private static void checkAllVariablesForCygwinPath(TestParameters _aParams)
+    {
+        // ----- check all System.getProperty(key) variables -----
+        String sOsName = System.getProperty("os.name");
+        if (! sOsName.toLowerCase().startsWith("windows"))
+        {
+            // we need to check only on windows
+            return;
+        }
+
+        Properties aProps = System.getProperties();
+        Enumeration aEnum = aProps.propertyNames();
+        // Enumeration aEnum = aProps.elements();        // these are only the values
+        boolean bEmergencyStop = false;
+
+        while (aEnum.hasMoreElements())
+        {
+            String sKey = (String)aEnum.nextElement();
+            String sValue = System.getProperty(sKey);
+
+            if (checkVariableForCygwin(sValue))
+            {
+                System.err.println("ERROR: OOoRunner detect cygwin path in '" + sKey + ":=" + sValue + "'");
+                bEmergencyStop = true;
+            }
+        }
+
+        // ----- check path variables separatly -----
+        String sDelim = System.getProperty("path.separator");
+        bEmergencyStop |= checkPathVariable("java.library.path", sDelim);
+        bEmergencyStop |= checkPathVariable("java.class.path", sDelim);
+        bEmergencyStop |= checkPathVariable("sun.boot.class.path", sDelim);
+
+        // ----- check all TestParameters -----
+        aEnum = _aParams.keys();
+        while (aEnum.hasMoreElements())
+        {
+            String sKey = (String)aEnum.nextElement();
+            if (_aParams.get(sKey) instanceof String)
+            {
+                String sValue = (String)_aParams.get(sKey);
+
+                if (checkVariableForCygwin(sValue))
+                {
+                    System.err.println("ERROR: OOoRunner detect cygwin path in '" + sKey + ":=" + sValue + "'");
+                    bEmergencyStop = true;
+                }
+            }
+        }
+
+        if (bEmergencyStop)
+        {
+            System.exit(-1);
+        }
+    }
     
-    public static void main(String[] args) {
-        
+    public static void main(String[] args)
+    {
+        System.out.println("OOoRunner Main()");
+
         setStartTime(getTime());
-        
+
         DynamicClassLoader dcl = new DynamicClassLoader();
 
         // get a class for test parameters
         TestParameters param = new TestParameters();
-        
-        ClParser cli = new ClParser();        
-        
+
+        ClParser cli = new ClParser();
+
         //parse the commandline arguments if an ini-parameter is given
         String iniFile = cli.getIniPath(args);
 
@@ -122,11 +218,12 @@ public class Runner
 
         //parse the commandline arguments
         // TODO: no right error message, if no parameter given!
-        cli.getCommandLineParameter(param,args);
-        
+        cli.getCommandLineParameter(param, args);
+
         Object tj = param.get("TestJob");
-        
-        if (tj==null) {
+
+        if (tj == null)
+        {
             System.out.println("==========================================================================");
             System.out.println("No TestJob given, please make sure that you ");
             System.out.println("a.) called the OOoRunner with the paramter -o <job> or -sce <scenarioFile>");
@@ -135,27 +232,28 @@ public class Runner
             System.out.println("==========================================================================");
             System.exit(-1);
         }
-        
-        System.out.println("TestJob: "+tj);
-        
-        TestBase toExecute = (TestBase) dcl.getInstance("base."+
-                                            (String)param.get("TestBase"));
+
+        System.out.println("TestJob: " + tj);
+        String sName = "base." + (String) param.get("TestBase");
+        TestBase toExecute = (TestBase) dcl.getInstance(sName);
+
+        checkAllVariablesForCygwinPath(param);
 
         boolean worked = toExecute.executeTest(param);
         long nTime = meanTime(getStartTime());
         String sBeautifyTime = beautifyTime(nTime);
-        
+
         System.out.println("Job run took: " + nTime + "ms " + " [" + sBeautifyTime + "]");
-        
+
         if (!worked)
         {
-            System.out.println("Job "+param.get("TestJob")+" failed");
+            System.out.println("Job " + param.get("TestJob") + " failed");
             System.exit(-1);
         }
         else
         {
-            System.out.println("Job "+param.get("TestJob")+" done");
+            System.out.println("Job " + param.get("TestJob") + " done");
             System.exit(0);
         }
-    }    
+    }
 }
diff --git a/qadevOOo/runner/util/DesktopTools.java b/qadevOOo/runner/util/DesktopTools.java
index 1c9213c..38459ce 100644
--- a/qadevOOo/runner/util/DesktopTools.java
+++ b/qadevOOo/runner/util/DesktopTools.java
@@ -245,6 +245,7 @@ public class DesktopTools {
         {
             throw new IllegalArgumentException("Document could not be loaded");
         }
+
         bringWindowToFront(oDoc);
         return oDoc;
     } //finish openNewDoc
@@ -254,6 +255,11 @@ public class DesktopTools {
      * @param DocumentToClose the document to close
      */
     public static void closeDoc(XInterface DocumentToClose) {
+        if (DocumentToClose == null)
+        {
+            return;
+        }
+        
         String kd = System.getProperty("KeepDocument");
         if (kd != null ) {
             System.out.println("The property 'KeepDocument' is set and so the document won't be disposed");
@@ -434,7 +440,7 @@ public class DesktopTools {
     }
     
     public static void bringWindowToFront(XComponent xComponent){
-        System.out.println("DEBUG: bring to front xCompoent");
+        System.out.println("DEBUG: bring to front xComponent");
         XModel xModel = (XModel) UnoRuntime.queryInterface(XModel.class, xComponent);
         if (xModel != null){
             bringWindowToFront(xModel);
diff --git a/qadevOOo/runner/util/PropertyName.java b/qadevOOo/runner/util/PropertyName.java
index f8fc2d4..64c118f 100644
--- a/qadevOOo/runner/util/PropertyName.java
+++ b/qadevOOo/runner/util/PropertyName.java
@@ -46,6 +46,9 @@ public interface PropertyName {
      * parameter name: "ConnectionString"
      */
     final public static String CONNECTION_STRING = "ConnectionString";
+    final public static String PIPE_CONNECTION_STRING = "PipeConnectionString";
+    final public static String USE_PIPE_CONNECTION = "UsePipeConnection";
+
     /**
      * parameter name: "TestBase"
      */


More information about the ooo-build-commit mailing list