TodoMVC-JavaFX is a collection of different implementations of the same JavaFX application. It aims to provide examples with different design patterns, frameworks, programming languages and programming styles.
By implementing the same use cases with different approaches we hope to provide several benefits:
- find out which different approaches and frameworks are out there
- compare different frameworks
- learn how to setup a small application with a specific framework and use it as basic project skeleton
- bring JavaFX community together and discuss the various approaches
Contributions are very welcome. There are several thinks to help out:
- add a new example for another framework/language/pattern
- improve existing examples
- improve documentation of the examples
- ideas on how the build scripts can be improved
- fix spelling errors
How to add a new example?
- Add a new issue with your idea. This way we can discuss about your idea and can make sure that multiple people aren't working on the same things without knowing from each other
- Fork the repository
- Add a new gradle module for your example
- Create a directory
- Add the module in
- Add a
build.gradlefile in your directory for your submodule
- Implement your example app.
- Add an acceptance test for your app. See Acceptance Tests for more infomations. If this approach doesn't work for your framework or language please comment in your issue and we will find a solution.
- Create a pull request
reference_impl contains a basic solution of how the app should work. You can use this as a starting point for your app. There are also FXML and CSS files that you can use.
The idea behind this project is to have multiple implementations of the same use cases. To make sure that each implementation has the same behaviour and acomplishes the same requirements there is a test suite of TestFX test cases for all requirements. You can find the tests in /tests/src/main/java/todomvcfx/AbstractTest.java.
To add the acceptance tests for your module:
- Create a test class in your module with a name like
- This test class has to extend from
todomvcfx.AbstractTest(the dependency to the
testsmodule is defined globally in the root
- Override the method
getAppClass()in your test class. This method has to return a class reference to your application's starter class (the class that extends from `javafx.application.Application).