RPTools / maptool

Virtual Tabletop for playing roleplaying games with remote players or face to face.
http://rptools.net
GNU Affero General Public License v3.0
802 stars 262 forks source link

add JavaFX support #204

Closed meltzow closed 3 days ago

meltzow commented 6 years ago

hi all,

are they any JavaFX Migrations for mapTool currently? if yes, please led me know.

I got a first milestone for this: a migration is softly. mapTool can display javaFX component in the current swing application. Here you can see at the top right edge a component named "CHAT_FX". This is the example JavaFX component. screenshotwithjavafx

here is my new fork: https://github.com/meltzow/maptool the JavaFX component reads the following file: https://github.com/meltzow/maptool/blob/master/maptool/src/main/resources/net/rptools/maptool/view/Chat.fxml

are there any guys/girls who can realize the fxml-files for all current existing components with SceneBuilder? see here: https://github.com/RPTools/maptool/blob/master/doc/How_To_Setup_UI_Tools.md I am not a UI designer but i am able to integrate these in mapTool.

a fxml based SplashScreen example was copied from https://github.com/RPTools/tokentool/tree/master/src/main/resources/net/rptools/tokentool/view

Is there anybody out there, who want to help?

Phergus commented 6 years ago

The current JavaFX efforts by the RPTools dev team have been by Jamz in TokenTool v2.x. He has also done a proof-of-concept implementation of the map window in MT that allowed for a video background.

The goal is to move all of MapTool's interface to JavaFX components.

Azhrei commented 6 years ago

Yes, we do plan to move everything to JFX eventually. Modal dialogs are probably the easiest place to drop-in some JFX code, as they are self-contained.

One thing that I'd like to find is a well-designed and extensible wizard-style framework for JFX. I played around a bit but the approaches I've seen (like in the ControlsFX library) are not very object-oriented, with each panel needing to know too much information about the other panels if they're going to share data. My test of this was a new Start a Server dialog that asked different questions at each step and attempted to verify the information between panels. But I found that sharing the data gathered so far, along with the state the dialog was in, to be pretty clunky. However, that was a long time ago.

I would love to see someone tackle a wizard-style dialog in JFX that is based primarily on interfaces, so that panels can be easily replaced or reordered. For anyone interested in tackling this, I have some overall ideas but nothing JFX-specific.

JamzTheMan commented 6 years ago

Yep, there are a few approaches. A FX app can have swing components and a swing app can have FX components.

One approach would be to replace a few components/frames with newer existing FX components. Some things would get a really nice big bang out of this, like replacing the 'frames' macros create using webview so you can now have HTML5/CSS3 content. The downside is this could end up getting messy and end up with some really patch/never completed parts.

Another approach is to convert to a FX app and include current Jcomponents into the FX app, converting components as we can. The downside here is there isn't a really good/solid/supported FX "docking" framework, so we either have to 1. Ditch docking and move onto another UI design or 2. adopt 1 of the current docking frameworks and we may not know about a major roadblock using it until further down the road.

The last approach is to bite the bullet and covert most of the app now in one shot to FX (leaving the zoneRenderer panel, eg the map, as a phase 2). I'm leaning towards this approach after redoing TokenTool. MapTool UI relies so heavy on JIDE that replacing parts of it is painful. And ripping the bandaid off and just doing it sometimes is just the better way. It will let us rip out huge chunks of code we already don't like.

At this point I was leaning on waiting for JDK 11 and go Open JDK, as 11 removes FX from the core and into it's own lib. That is happening this fall which seems like a good place to start.

At least, that's my 2 copper pieces.

cwisniew commented 5 years ago

Jamz has created an FX branch for the move to JavaFX.

Jmr3366 commented 3 days ago

@Phergus is there more to this that would cause it to remain open?

Phergus commented 3 days ago

Nope. It was never an active issue.