=== cut === (stderr)
E:\WU\Lehrveranstaltungen\Materialien\BP2_AutoJava\270_AutoJava_JavaFX_V03_code\fxml_02>fxml_02.rex de > de_output.txt
org.rexxla.bsf.engines.rexx.RexxScriptEngine@40a513e0: show source of Rexx script, annotation "/*@showsource*/" present in file [null]:
/// ----------------------------------------> begin of Rexx script ----------------------------------------> ///
/*@showsource*/   /* the previous Rexx script annotation will cause this script's source code to be shown */
started=.dateTime~new   -- take the date and time
slotDir=arg(arg())      -- fetch the slotDir argument (BSF4ooRexx adds this as the last argument at the Java side)
scriptContext=slotDir~scriptContext -- get the ScriptContext from the slotDir (last) argument

parse source s
say "just arrived at" pp(started)": parse source ->" pp(s)
engine_scope=100  -- define numeric value for engine scope Bindings
global_scope=200  -- define numeric value for global scope Bindings
   -- add an attribute to the ScriptContext's GLOBAL_SCOPE Bindings, used for "labelStartTime" in the fxml-document
scriptContext~setAttribute("rexxStarted", "Rexx started at:" started~string, global_scope)
parse version v         -- get Rexx version, display it in the "rexxInfo" label
scriptContext~setAttribute("rexxInfo", "Rexx version:" v, global_scope)
   -- set attribute in ENGINE_SCOPE Bindings (visible for this script engine only):
scriptContext~setAttribute("title", "--> -> >", engine_scope)
   -- set attribute in GLOBAL_SCOPE Bindings (visible for all script engines):
scriptContext~setAttribute("count", 1, global_scope)

/* *************************************************************************************************** */
/* --------------------------------------------------------------------------------------------------- */
/* This routine will be called from the Rexx code defined with the "onAction" event attribute; cf.
   the JavaFX control with the id "label" in the fxml document    */
::routine klickButtonAction public
    slotDir=arg(arg())   -- fetch the slotDir argument (BSF4ooRexx adds this as the last argument at the Java side)
    scriptContext=slotDir~scriptContext   -- get the slotDir (the last) argument, get the entry "SCRIPTCONTEXT"
    say " ==> ---> arrived in public Rexx routine 'klickButtonAction' ..."
       /* the following Rexx script annotation will incorporate the denoted attributes as local
          Rexx variables which can be used immediately thereafter by Rexx  */
    /*@get(rexxInfo label count event title)*/
      /* changing the attribute that gets constantly updated (once we return from
         this event handler) thanks to the FXMLLoader: */
    rexxInfo="Updated from public Rexx routine 'klickButtonAction'."
    if count//2=0 then rexxInfo=rexxInfo~reverse   -- if even, reverse the current text
       /* the following Rexx script annotation will update the value of the attribute
          named 'rexxInfo' setting it to the current value of the Rexx variable named REXXINFO */
    /*@set(rexxInfo)*/   -- update the attribute with the Rexx variable's current (new) value
       /* show the currently defined attributes in all ScriptContext's scopes   */
    say "getting all attributes from all ScriptContext's scopes..."
    st=.stringTable~new     -- contains the names of the Bindings
    st[100]="ENGINE_SCOPE"
    st[200]="GLOBAL_SCOPE"
    do sc over 100, 200
        say "ScriptContext scope:" pp(sc) "("st~entry(sc)"), available attributes:"
        bin=scriptContext~getBindings(sc)
        if bin=.nil then iterate -- inexistent scope
        keys=bin~keySet          -- get kay values
        it=keys~makearray        -- get the keys as a Rexx array
        do key over it~sortWith(.CaselessComparator~new) -- sort keys (attributes) caselessly
           val=bin~get(key)      -- fetch the key's value
           str=""
           if val~isA(.bsf) then str="~toString:" pp(val~toString)
           say "  " pp(key)~left(35,".") pp(val) str
        end
        say "-"~copies(79)
    end
      -- access the "label" JavaFX Label, change its text
    label~setText(title .dateTime~new~string "(count #" count")")
      /* now explicitly update the count attribute in global scope bindings; if the
         attribute does not exist, it would be created        */
    scriptContext~setAttribute("count", count+1, 200)
    say " <== <--- returning from public Rexx routine 'klickButtonAction'."
    say
\\\ <----------------------------------------- end of Rexx script <----------------------------------------- \\\
org.rexxla.bsf.engines.rexx.RexxScriptEngine@40a513e0: show source of EDITED Rexx script, annotation "/*@showsource*/" present in [fxml_02_controller.rex]:
/// ========================================> begin of EDITED Rexx script ========================================> ///
/*@showsource*/   /* the previous Rexx script annotation will cause this script's source code to be shown */
started=.dateTime~new   -- take the date and time
slotDir=arg(arg())      -- fetch the slotDir argument (BSF4ooRexx adds this as the last argument at the Java side)
scriptContext=slotDir~scriptContext -- get the ScriptContext from the slotDir (last) argument

parse source s
say "just arrived at" pp(started)": parse source ->" pp(s)
engine_scope=100  -- define numeric value for engine scope Bindings
global_scope=200  -- define numeric value for global scope Bindings
   -- add an attribute to the ScriptContext's GLOBAL_SCOPE Bindings, used for "labelStartTime" in the fxml-document
scriptContext~setAttribute("rexxStarted", "Rexx started at:" started~string, global_scope)
parse version v         -- get Rexx version, display it in the "rexxInfo" label
scriptContext~setAttribute("rexxInfo", "Rexx version:" v, global_scope)
   -- set attribute in ENGINE_SCOPE Bindings (visible for this script engine only):
scriptContext~setAttribute("title", "--> -> >", engine_scope)
   -- set attribute in GLOBAL_SCOPE Bindings (visible for all script engines):
scriptContext~setAttribute("count", 1, global_scope)

/* *************************************************************************************************** */
/* --------------------------------------------------------------------------------------------------- */
/* This routine will be called from the Rexx code defined with the "onAction" event attribute; cf.
   the JavaFX control with the id "label" in the fxml document    */
::routine klickButtonAction public
    slotDir=arg(arg())   -- fetch the slotDir argument (BSF4ooRexx adds this as the last argument at the Java side)
    scriptContext=slotDir~scriptContext   -- get the slotDir (the last) argument, get the entry "SCRIPTCONTEXT"
    say " ==> ---> arrived in public Rexx routine 'klickButtonAction' ..."
       /* the following Rexx script annotation will incorporate the denoted attributes as local
          Rexx variables which can be used immediately thereafter by Rexx  */
     ; call BSFContextVariables 'set', .jsr223~get(arg(arg())~scriptContext, "rexxInfo label count event title") ; /*@get(rexxInfo label count event title)*/
      /* changing the attribute that gets constantly updated (once we return from
         this event handler) thanks to the FXMLLoader: */
    rexxInfo="Updated from public Rexx routine 'klickButtonAction'."
    if count//2=0 then rexxInfo=rexxInfo~reverse   -- if even, reverse the current text
       /* the following Rexx script annotation will update the value of the attribute
          named 'rexxInfo' setting it to the current value of the Rexx variable named REXXINFO */
     ; .jsr223~set(arg(arg())~scriptContext, "rexxInfo", BSFContextVariables('get')) ; /*@set(rexxInfo)*/   -- update the attribute with the Rexx variable's current (new) value
       /* show the currently defined attributes in all ScriptContext's scopes   */
    say "getting all attributes from all ScriptContext's scopes..."
    st=.stringTable~new     -- contains the names of the Bindings
    st[100]="ENGINE_SCOPE"
    st[200]="GLOBAL_SCOPE"
    do sc over 100, 200
        say "ScriptContext scope:" pp(sc) "("st~entry(sc)"), available attributes:"
        bin=scriptContext~getBindings(sc)
        if bin=.nil then iterate -- inexistent scope
        keys=bin~keySet          -- get kay values
        it=keys~makearray        -- get the keys as a Rexx array
        do key over it~sortWith(.CaselessComparator~new) -- sort keys (attributes) caselessly
           val=bin~get(key)      -- fetch the key's value
           str=""
           if val~isA(.bsf) then str="~toString:" pp(val~toString)
           say "  " pp(key)~left(35,".") pp(val) str
        end
        say "-"~copies(79)
    end
      -- access the "label" JavaFX Label, change its text
    label~setText(title .dateTime~new~string "(count #" count")")
      /* now explicitly update the count attribute in global scope bindings; if the
         attribute does not exist, it would be created        */
    scriptContext~setAttribute("count", count+1, 200)
    say " <== <--- returning from public Rexx routine 'klickButtonAction'."
    say
\\\ <========================================= end of EDITED Rexx script <========================================= \\\
org.rexxla.bsf.engines.rexx.RexxScriptEngine@40a513e0: show source of Rexx script, annotation "/*@showsource*/" present in file [null]:
/// ----------------------------------------> begin of Rexx script ----------------------------------------> ///
       say ' ==> ---> arrived in button''s onAction-code ...'  ;              /*@showsource*/ /* show this onAction-Rexx code in original and edited state */ ;                    use arg event, slotDir /* this argument is always sent by BSF4ooRexx */ ;                    /*@get('label')*/ /* a Rexx script annotation: incorporates the attribute 'label' as a local Rexx variable */ ;                    say ' ... label~getText='pp(label~getText)  ;                    say ' ... changing text in label to current date and time ...' ;                    label~text=.dateTime~new~string             ;                    say ' ... label~getText='pp(label~getText)  ;                    say ' ... now invoking the public Rexx routine ''klickButtonAction''' ;                    call klickButtonAction slotDir /* do additional work */;
\\\ <----------------------------------------- end of Rexx script <----------------------------------------- \\\
org.rexxla.bsf.engines.rexx.RexxScriptEngine@40a513e0: show source of EDITED Rexx script, annotation "/*@showsource*/" present in [FXML_02_Document.fxml-onAction_attribute_in_element_ending_at_line_43]:
/// ========================================> begin of EDITED Rexx script ========================================> ///
       say ' ==> ---> arrived in button''s onAction-code ...'  ;              /*@showsource*/ /* show this onAction-Rexx code in original and edited state */ ;                    use arg event, slotDir /* this argument is always sent by BSF4ooRexx */ ;                     ; call BSFContextVariables 'set', .jsr223~get(arg(arg())~scriptContext, "'label'") ; /*@get('label')*/ /* a Rexx script annotation: incorporates the attribute 'label' as a local Rexx variable */ ;                    say ' ... label~getText='pp(label~getText)  ;                    say ' ... changing text in label to current date and time ...' ;                    label~text=.dateTime~new~string             ;                    say ' ... label~getText='pp(label~getText)  ;                    say ' ... now invoking the public Rexx routine ''klickButtonAction''' ;                    call klickButtonAction slotDir /* do additional work */;
\\\ <========================================= end of EDITED Rexx script <========================================= \\\

E:\WU\Lehrveranstaltungen\Materialien\BP2_AutoJava\270_AutoJava_JavaFX_V03_code\fxml_02>dir /OD
=== cut === (stderr, end)
==========================

REXXout>just arrived at [2023-01-24T19:08:18.651000]: parse source -> [WindowsNT SUBROUTINE fxml_02_controller.rex]
REXXout> ==> ---> arrived in button's onAction-code ...
REXXout> ... label~getText=[]
REXXout> ... changing text in label to current date and time ...
REXXout> ... label~getText=[2023-01-24T19:08:47.577000]
REXXout> ... now invoking the public Rexx routine 'klickButtonAction'
REXXout> ==> ---> arrived in public Rexx routine 'klickButtonAction' ...
REXXout>getting all attributes from all ScriptContext's scopes...
REXXout>ScriptContext scope: [100] (ENGINE_SCOPE), available attributes:
REXXout>   [event]............................ [javafx.event.ActionEvent@5ace6ca9] ~toString: [javafx.event.ActionEvent[source=Button[id=idButton, styleClass=button]'Drck mich!']]
REXXout>   [javax.script.argv]................ [[Ljava.lang.Object;@48827476] ~toString: [[Ljava.lang.Object;@48827476]
REXXout>   [javax.script.engine].............. [Open Object Rexx (ooRexx)]
REXXout>   [javax.script.engine_version]...... [101.20220806]
REXXout>   [javax.script.filename]............ [FXML_02_Document.fxml-onAction_attribute_in_element_ending_at_line_43]
REXXout>   [javax.script.language]............ [ooRexx]
REXXout>   [javax.script.language_version].... [REXX-ooRexx_5.1.0(MT)_64-bit 6.05 6 Jan 2023]
REXXout>   [javax.script.name]................ [rexx]
REXXout>   [title]............................ [--> -> >]
REXXout>-------------------------------------------------------------------------------
REXXout>ScriptContext scope: [200] (GLOBAL_SCOPE), available attributes:
REXXout>   [count]............................ [1]
REXXout>   [idAnchorPane]..................... [javafx.scene.layout.AnchorPane@eca8ae8] ~toString: [AnchorPane[id=idAnchorPane, styleClass=root root]]
REXXout>   [idButton]......................... [javafx.scene.control.Button@3760a173] ~toString: [Button[id=idButton, styleClass=button]'Drck mich!']
REXXout>   [label]............................ [javafx.scene.control.Label@69092e3c] ~toString: [Label[id=label, styleClass=label]'2023-01-24T19:08:47.577000']
REXXout>   [labelRexxInfo].................... [javafx.scene.control.Label@49153b46] ~toString: [Label[id=labelRexxInfo, styleClass=label]'Updated from public Rexx routine 'klickButtonAction'.']
REXXout>   [labelRexxStarted]................. [javafx.scene.control.Label@73e4759e] ~toString: [Label[id=labelRexxStarted, styleClass=label rexxStarted]'Rexx started at: 2023-01-24T19:08:18.651000']
REXXout>   [location]......................... [java.net.URL@49a8db74] ~toString: [file:FXML_02_Document.fxml]
REXXout>   [resources]........................ [java.util.PropertyResourceBundle@f797f7f] ~toString: [java.util.PropertyResourceBundle@f797f7f]
REXXout>   [rexxInfo]......................... [Updated from public Rexx routine 'klickButtonAction'.]
REXXout>   [rexxStarted]...................... [Rexx started at: 2023-01-24T19:08:18.651000]
REXXout>   [year]............................. [javafx.scene.control.Label@26a097e2] ~toString: [Label[id=year, styleClass=label]'Jahr->']
REXXout>-------------------------------------------------------------------------------
REXXout> <== <--- returning from public Rexx routine 'klickButtonAction'.
REXXout>
REXXout> ==> ---> arrived in button's onAction-code ...
REXXout> ... label~getText=[--> -> > 2023-01-24T19:08:47.606000 (count # 1)]
REXXout> ... changing text in label to current date and time ...
REXXout> ... label~getText=[2023-01-24T19:09:06.489000]
REXXout> ... now invoking the public Rexx routine 'klickButtonAction'
REXXout> ==> ---> arrived in public Rexx routine 'klickButtonAction' ...
REXXout>getting all attributes from all ScriptContext's scopes...
REXXout>ScriptContext scope: [100] (ENGINE_SCOPE), available attributes:
REXXout>   [event]............................ [javafx.event.ActionEvent@3421b430] ~toString: [javafx.event.ActionEvent[source=Button[id=idButton, styleClass=button]'Drck mich!']]
REXXout>   [javax.script.argv]................ [[Ljava.lang.Object;@48231b28] ~toString: [[Ljava.lang.Object;@48231b28]
REXXout>   [javax.script.engine].............. [Open Object Rexx (ooRexx)]
REXXout>   [javax.script.engine_version]...... [101.20220806]
REXXout>   [javax.script.filename]............ [FXML_02_Document.fxml-onAction_attribute_in_element_ending_at_line_43]
REXXout>   [javax.script.language]............ [ooRexx]
REXXout>   [javax.script.language_version].... [REXX-ooRexx_5.1.0(MT)_64-bit 6.05 6 Jan 2023]
REXXout>   [javax.script.name]................ [rexx]
REXXout>   [title]............................ [--> -> >]
REXXout>-------------------------------------------------------------------------------
REXXout>ScriptContext scope: [200] (GLOBAL_SCOPE), available attributes:
REXXout>   [count]............................ [2]
REXXout>   [idAnchorPane]..................... [javafx.scene.layout.AnchorPane@eca8ae8] ~toString: [AnchorPane[id=idAnchorPane, styleClass=root root]]
REXXout>   [idButton]......................... [javafx.scene.control.Button@3760a173] ~toString: [Button[id=idButton, styleClass=button]'Drck mich!']
REXXout>   [label]............................ [javafx.scene.control.Label@69092e3c] ~toString: [Label[id=label, styleClass=label]'2023-01-24T19:09:06.489000']
REXXout>   [labelRexxInfo].................... [javafx.scene.control.Label@49153b46] ~toString: [Label[id=labelRexxInfo, styleClass=label]'.'noitcAnottuBkcilk' enituor xxeR cilbup morf detadpU']
REXXout>   [labelRexxStarted]................. [javafx.scene.control.Label@73e4759e] ~toString: [Label[id=labelRexxStarted, styleClass=label rexxStarted]'Rexx started at: 2023-01-24T19:08:18.651000']
REXXout>   [location]......................... [java.net.URL@49a8db74] ~toString: [file:FXML_02_Document.fxml]
REXXout>   [resources]........................ [java.util.PropertyResourceBundle@f797f7f] ~toString: [java.util.PropertyResourceBundle@f797f7f]
REXXout>   [rexxInfo]......................... [.'noitcAnottuBkcilk' enituor xxeR cilbup morf detadpU]
REXXout>   [rexxStarted]...................... [Rexx started at: 2023-01-24T19:08:18.651000]
REXXout>   [year]............................. [javafx.scene.control.Label@26a097e2] ~toString: [Label[id=year, styleClass=label]'Jahr->']
REXXout>-------------------------------------------------------------------------------
REXXout> <== <--- returning from public Rexx routine 'klickButtonAction'.
REXXout>
REXXout> ==> ---> arrived in button's onAction-code ...
REXXout> ... label~getText=[--> -> > 2023-01-24T19:09:06.504000 (count # 2)]
REXXout> ... changing text in label to current date and time ...
REXXout> ... label~getText=[2023-01-24T19:09:29.499000]
REXXout> ... now invoking the public Rexx routine 'klickButtonAction'
REXXout> ==> ---> arrived in public Rexx routine 'klickButtonAction' ...
REXXout>getting all attributes from all ScriptContext's scopes...
REXXout>ScriptContext scope: [100] (ENGINE_SCOPE), available attributes:
REXXout>   [event]............................ [javafx.event.ActionEvent@7fb27aa7] ~toString: [javafx.event.ActionEvent[source=Button[id=idButton, styleClass=button]'Drck mich!']]
REXXout>   [javax.script.argv]................ [[Ljava.lang.Object;@28a789b] ~toString: [[Ljava.lang.Object;@28a789b]
REXXout>   [javax.script.engine].............. [Open Object Rexx (ooRexx)]
REXXout>   [javax.script.engine_version]...... [101.20220806]
REXXout>   [javax.script.filename]............ [FXML_02_Document.fxml-onAction_attribute_in_element_ending_at_line_43]
REXXout>   [javax.script.language]............ [ooRexx]
REXXout>   [javax.script.language_version].... [REXX-ooRexx_5.1.0(MT)_64-bit 6.05 6 Jan 2023]
REXXout>   [javax.script.name]................ [rexx]
REXXout>   [title]............................ [--> -> >]
REXXout>-------------------------------------------------------------------------------
REXXout>ScriptContext scope: [200] (GLOBAL_SCOPE), available attributes:
REXXout>   [count]............................ [3]
REXXout>   [idAnchorPane]..................... [javafx.scene.layout.AnchorPane@eca8ae8] ~toString: [AnchorPane[id=idAnchorPane, styleClass=root root]]
REXXout>   [idButton]......................... [javafx.scene.control.Button@3760a173] ~toString: [Button[id=idButton, styleClass=button]'Drck mich!']
REXXout>   [label]............................ [javafx.scene.control.Label@69092e3c] ~toString: [Label[id=label, styleClass=label]'2023-01-24T19:09:29.499000']
REXXout>   [labelRexxInfo].................... [javafx.scene.control.Label@49153b46] ~toString: [Label[id=labelRexxInfo, styleClass=label]'Updated from public Rexx routine 'klickButtonAction'.']
REXXout>   [labelRexxStarted]................. [javafx.scene.control.Label@73e4759e] ~toString: [Label[id=labelRexxStarted, styleClass=label rexxStarted]'Rexx started at: 2023-01-24T19:08:18.651000']
REXXout>   [location]......................... [java.net.URL@49a8db74] ~toString: [file:FXML_02_Document.fxml]
REXXout>   [resources]........................ [java.util.PropertyResourceBundle@f797f7f] ~toString: [java.util.PropertyResourceBundle@f797f7f]
REXXout>   [rexxInfo]......................... [Updated from public Rexx routine 'klickButtonAction'.]
REXXout>   [rexxStarted]...................... [Rexx started at: 2023-01-24T19:08:18.651000]
REXXout>   [year]............................. [javafx.scene.control.Label@26a097e2] ~toString: [Label[id=year, styleClass=label]'Jahr->']
REXXout>-------------------------------------------------------------------------------
REXXout> <== <--- returning from public Rexx routine 'klickButtonAction'.
REXXout>
------------------------- after rxApp~launch -------------------------
