On Sun, 23 Feb 2020 14:57:44 GMT, Rony G. Flatscher <github.com+60214806+rony...@openjdk.org> wrote:
>> OK, forgot to submit an explanatory text related to this fix. Posted [1] >> which explains the problem and the suggested solution for discussion. >> >> - This pull request relates to: >> <https://bugs.openjdk.java.net/browse/JDK-8234959> >> >> - Brief background: the controller code for a FXML file can be written in >> any of the Java script languages that implement the javax.script framework >> introduced with Java 6 >> >> There are three possible types of script code definitions possible in fxml >> files: >> >> 1. in an empty script element where the source attribute denotes an external >> file >> that contains the code, e.g.: >> >> <fx:script source="somescript.rex" /> >> >> This pull request uses the source attribute value as the filename. >> >> There are no arguments to be supplied. >> >> 2. text of a script element, e.g.: >> >> <fx:script>say 'code executed at:' .dateTime~new </fx:script> >> >> or: >> >> <fx:script><![CDATA[say 'code executed at:' .dateTime~new >> ]]></fx:script> >> >> This pull request uses the fxml-filename appended with the string >> "-script_starting_at_line_" and the starting line number of the code. >> >> There are no arguments to be supplied. >> >> Reasonings: >> >> - in the case that multiple fxml files employ script code it is >> important >> to learn the name of the fxml file that hosts the code that gets >> executed >> >> - the dash after the fxml filename is meant to ease parsing >> >> - in the case that there are multiple fx:script elements in a fxml >> file >> with inline code it is important to learn in which line the code >> starts >> that gets executed >> >> - the decorated filename thereby becomes self documentary and >> unambiguous to >> the script code developer when debugging >> >> >> 3. PCDATA text in an event attribute which by convention starts with "on", >> e.g. "onAction": >> >> <fx:button text="Hi!" onAction="say 'click at:' .dateTime~new', >> event='arg(1)~toString" /> >> >> This pull request uses the fxml-filename appended with a dash "-", >> appended with the >> name of the event attribute, the string >> "_attribute_in_element_ending_at_line_" and >> the ending line number of the element. >> >> In the ScriptEventHandler constructor the decorated filename gets stored >> in addition >> to the script and the scriptEngine. >> >> Each time the event fires the event object argument will be stored in a >> copy of the >> engineBindings with the index EVENT_KEY as well as with a single capacity >> Object array >> stored with the index ScriptEngine.ARGV and the filename with the index >> ScriptEngine.FILENAME. The script's evaluation will get this >> engineBindings as >> its ENGINE_SCOPE Bindings supplied. >> >> Reasonings: >> >> - in the case that multiple fxml files employ script code it is >> important >> to learn the name of the fxml file that hosts the event code that >> gets >> executed >> >> - the dash after the fxml filename is meant to ease parsing >> >> - in the case that there are multiple event attributes in elements >> in a fxml file it is important to learn which event attribute in >> which >> element hosts the event script code that gets executed >> >> - the decorated filename thereby becomes self documentary and >> unambiguous to >> the script code developer when debugging >> >> - the structural change to the constructor (adding the decorated >> filename as >> a third argument) of the private static ScriptEventHandler class >> is confined >> to the FXMLLoader class and has no side effects >> >> [1] "Ad suggested test unit for 'JDK-8234959 FXMLLoader does not populate >> ENGINE_SCOPE Bindings with FILENAME and ARGV'": >> <https://mail.openjdk.java.net/pipermail/openjfx-dev/2020-February/025104.html> > > Sorry, mixed up the link with the test unit WIP! :( > > This is the correct link with the explanatory text related to this suggested > fix. Posted [1] which explains the problem and the suggested solution for > discussion. > [1] 'Ad suggested fix for "JDK-8234959 FXMLLoader does not populate > ENGINE_SCOPE Bindings with FILENAME and ARGV"': > <https://mail.openjdk.java.net/pipermail/openjfx-dev/2020-February/025102.html> @aghaisas can you also review this? ------------- PR: https://git.openjdk.java.net/jfx/pull/122