Hi Michel,
Thanks for all your kind words i
t's always nice to hear good feedbacks !
I will try to answer to all your questions:
=> Even I'm not a fan of FXML, I have made some custom development to support them into JRebirth, there is a showcase application available here : http://jrebirth.org/showcases/FXML.html
with source code here : https://github.com/JRebirth/JRebirth/tree/master/org.jrebirth.af/showcase/fxml (currently it's the 7.7.2 version available on the master branch, you can also choose another development branch 7.x (for 7.7.5) or 8.x (for 8.0.0) )
It describes all ways avaible to integrate fxml into JRebirth pattern.
=> Model creates the View (if any could be NullView or an FXML file)
View creates the controller (if any could be NullController)
The Model is a Component like Command and Service, the View and the Controller are not Component.
The Controller is an UI controller used to listen JavaFX events.
The View will setup the JavaFX nodes attached to the rootNode of the Model that can be attached anywhere later by using custom command (ShowModelCommand)
The Model manage the business logic by managing optionally an Object, doing custom stuff like calling Command or Service.
This custom MVC is flexible, as you can access all parts from one by using provided getter (getModel, getView, getController).
The Model can be viewed as a Model for UI and as a controller one level up for application.
As I described here (
http://jrebirth.org/doc/Introduction.html), the pattern wCS-MVC is inspired by severals other patterns to help modularization inside application.
Another element will be added by latest 8.0.0 version: Behavior, any component can have zero or several Behavior that help to do a common task. (ie: SelectBehavior that add the current Model to an Application global selection .... etc, SecurityBehavior that manage security credentials)
8.0.0 wil also give Component modularization configured by annotation (Interface + several implementations with an authority that load the right impl according to its priority)
=> Conerning thread, all is possible, JRebirth offers a default thread management to avoid lags and freezes or deadlocks.
The deferAction is a JavaFX 1.3 method, in JavaFX 2+ you should use Platform.runLater or JRebirth.runIntoJAT that just wrap the call (Jrebirth manage 3 kind of thread, JAT, JIT, JTP+HPTP).
Services can be used as you want (like a pojo service, a computation service, wrapper service for third library)
So yes you can easily create along-living service that create your bidge (creating and listening to a socket) and on event send a Wave by calling sendWave(final Wave wave) (the wave creation will be performed into your thread, bu then the wave will be sent and consumed into the JIT one).
But don't get a Model and call one of its method directly, you won't be into the JAT.
Hope I'm answered correctly to your questions otherwise don't hesitate to re-post :D, it's always rewarding to discuss about real use cases.
Best Regard
Seb