In case someone needs extra performance I can point you to my FXML => Java-Converter which will give you the best performance ;-)
Tom On 01.10.13 09:15, Martin Sladecek wrote: > After discussion with Richard, we decided to remove the template flag > from FXMLLoader for 8.0. > This API is not mature yet, due to the reasons described below and > should be completely re-designed for some next release. > > This means that loading the same fxml multiple times will still require > multiple FXMLLoader instances. > > Any comments? > > Thanks, > -Martin > > On 09/20/2013 02:22 PM, Martin Sladecek wrote: >> Hi, >> I would like to discuss a 8.0 feature of FXMLLoader - the template flag. >> I was introduced with this issue: >> https://javafx-jira.kenai.com/browse/RT-23413, but unfortunately, it >> never worked: https://javafx-jira.kenai.com/browse/RT-28121. I was >> trying to fix the issue, but the whole concept of a flag for loading >> templates seems hardly usable and incorrect to me and should be >> replaced with something more appropriate. >> >> The reason is the handling of root, controller and the namespace >> before and after the load. Both are treated in 2 different ways. >> Before the load, they are used to adjust the following load - by >> setting the root (for <fx:root> tag), setting the namespace and a >> controller. >> However, after the load, these properties (though not FX-properties) >> can be used to query what was just loaded. The root of the FXML, the >> namespace with all "id"s and the controller. >> >> Now that's not very useful when you want to use template loading. My >> solution for RT-28121 (when keeping the old API) is to save the >> namespace after setTemplate(true) was called, using this namespace on >> each load(), clearing it at the begging of load() + disallow >> setController() for this mode. >> >> But that doesn't cover all of the relevant use-cases I can think of. >> Actually, without changing the API, I doubt we can support all such >> use-cases. >> >> Here's the set I'm working with: >> 1) setup some "template namespace", n times do { adjust namespace >> (based on template namespace) , load) } >> >> 2) n times do {load, query id from namespace} >> >> 3) n times do {setController(new Controller) load } >> >> 4) n times do {load, query newly created controller} >> >> 5,6) same as 3,4 but with root >> >> So while in 1,3 we would need to clear namespace/controller after each >> load, in 2,4 we need to clear it before each load. In case 3), >> forgetting to set a new controller would otherwise result in 2 >> instances with the same controller. >> >> One solution might be to split this to 2 independent calls. >> setController/getLoadedController, ObservableMap getNamespace() and >> Map getLoadedNamespace (unmodifiable). >> >> Another might be a completely new class FXMLTemplate. >> It might yield new pre-set FXMLLoaders that can be adjusted and >> loaded, but it means generating a temporary object for each call. >> Also, FXMLLoader would need to be updated, so that it's only possible >> to call load() once. >> >> Other ideas / use-cases? >> >> Thanks, >> -Martin >
