From 98e17cefdff02760dd1ad2a0edfd73e04b5b2620 Mon Sep 17 00:00:00 2001 From: Manuel Mauky Date: Mon, 6 Jul 2015 16:34:13 +0200 Subject: [PATCH] #217 fixed and improved readme files --- examples/README.md | 41 +++++++++++------- examples/contacts-example/README.md | 53 +++++++++++++++++++++++- examples/todomvc-example/README.md | 11 +++++ examples/todomvc-example/screenshot.png | Bin 0 -> 10498 bytes mvvmfx-archetype/README.md | 2 +- mvvmfx-cdi/README.md | 21 ++++++---- mvvmfx-guice/README.md | 21 +++++----- 7 files changed, 112 insertions(+), 37 deletions(-) create mode 100644 examples/todomvc-example/README.md create mode 100644 examples/todomvc-example/screenshot.png diff --git a/examples/README.md b/examples/README.md index d8154c963..131cb9fe4 100644 --- a/examples/README.md +++ b/examples/README.md @@ -1,18 +1,29 @@ ### Contains the examples for mvvmfx -Content: +At the moment we have 3 example applications: +- **books-example**: An app to search for books in a library. + - Shows how to integrate a REST backend (Optional) + - Uses EasyDI as dependency injection library +- **contacts-example**: A contact management application + - Master-Detail + - Dialogs + - CDI as dependency injection library, including CDI-Events + - Validation + - Model-Wrapper + - I18N and ResourceBundle handling + - [DataFX](http://www.javafxdata.org/) +- **todomvc-example**: A Todo-App influenced by the popular [TodoMVC.com](http://todomvc.com/). + - NotificationCenter + - MvvmFX views as items of a ListView + - [EasyBind](https://github.com/TomasMikula/EasyBind) for filtering Lists -- **mvvmfx-books-example**: An app to search for books in a library. Connects to a REST backend. -- **mvvmfx-complex-example**: contains the user interface and logic code for an example application. -To run this example you need either mvvmfx-cdi-starter or mvvmfx-guice-starter. -- **mvvmfx-cdi-starter**: contains the startup code to run the mvvmfx-complex-example with CDI/Weld -as dependency injection framework. -- **mvvmfx-guice-starter**: contains the startup code to run the mvvmfx-complex-example with Guice -as dependency injection framework. -- **mvvmfx-fx-root-example**: contains a small custom control that uses the fx:root element together with mvvmfx. -- **mvvmfx-helloworld-example**: A simple hello world view. This example is used in the [Getting Started/Step-by-Step tutorial](/../../wiki/Getting-Started-HelloWorld-%28deutsch%29). -- **mvvmfx-helloworld-without-fxml**: A hello world example that shows hot to use MvvmFX with a view implemented in pure Java and not with FXML. -- **mvvmfx-contacts**: A contact management application. This example shows a master-detail view, dialogs and the usage of CDI including CDI-Events. -This example also integrates some other JavaFX community libraries. -- **mvvmfx-synchronizefx**: This example uses the library [SynchronizeFX](https://github.com/saxsys/SynchronizeFX) to create a distributed ViewModel. -This way the state of the UI of different instances of the App (on different JVM's, on different computers) is always synchronized between the apps. \ No newline at end of file + +In addition to these apps we have some smaller examples. Each examples shows a specific aspect of the framework but isn't very useful by itself. + +- **fx-root-example**: Shows how to use `fx:root` with mvvmFX. This way you can create your own custom components. +- **helloworld**: A minimal mvvmFX application using *FXML*. +- **helloworld-without-fxml**: A minimal mvvmFX application using pure Java code instead of *FXML*. +- **synchronizefx-example**: Shows how to integrade the library [SynchronizeFX](https://github.com/saxsys/SynchronizeFX) to implement a distributed ViewModel. This way the state of the UI of different instances of the App (on different JVM's, on different computers) is always synchronized between the apps. +- **welcome-example**: A simple app that shows a welcome message for people. + - It demonstrates the usage of [mvvmfx-cdi](https://github.com/sialcasa/mvvmFX/tree/develop/mvvmfx-cdi) and [mvvmfx-guice](https://github.com/sialcasa/mvvmFX/tree/develop/mvvmfx-guice). The complete code base is shared, only a specific starter class for each dependency injection framework is needed. + - Shows the usage of [Commands](https://github.com/sialcasa/mvvmFX/wiki/Commands). diff --git a/examples/contacts-example/README.md b/examples/contacts-example/README.md index 1dd91e014..8d63549c4 100644 --- a/examples/contacts-example/README.md +++ b/examples/contacts-example/README.md @@ -27,7 +27,7 @@ With a dialog you can add new contacts or edit existing ones. - The application uses CDI-Events to decouple the *add*/*edit* dialogs from the places where they are opened. Instead, when a button is clicked to open a dialog, an CDI-Event is fired. The dialog reacts to this event and will open up itself. -[ToolbarViewModel.java:](src/main/java/de/saxsys/mvvmfx/contacts/ui/toolbar/ToolbarViewModel.java) +[ToolbarViewModel.java:](src/main/java/de/saxsys/mvvmfx/examples/contacts/ui/toolbar/ToolbarViewModel.java) ```java @Inject @@ -38,7 +38,7 @@ public void addNewContactAction(){ } ``` -[AddContactDialog.java:](src/main/java/de/saxsys/mvvmfx/contacts/ui/addcontact/AddContactDialog.java) +[AddContactDialog.java:](src/main/java/de/saxsys/mvvmfx/examples/contacts/ui/addcontact/AddContactDialog.java) ```java public class AddContactDialog implements FxmlView { @@ -49,3 +49,52 @@ public class AddContactDialog implements FxmlView { } } ``` + +#### ResourceBundles and I18N + +There are resourceBundles available for german and english language. In [App.java](src/main/java/de/saxsys/mvvmfx/examples/contacts/App.java) +a global resourceBundle is defined for the whole application: + +```java +... + +@Inject +private ResourceBundle resourceBundle; + + +@Override +public void startMvvmfx(Stage stage) throws Exception { + LOG.info("Starting the Application"); + MvvmFX.setGlobalResourceBundle(resourceBundle); + + ... +} +``` + +In addition for the menu a specific resourceBundle is defined in the [MainView.fxml](src/main/resources/de/saxsys/mvvmfx/examples/contacts/ui/main/MainView.fxml) via `fx:include`: + +```xml +... + +... +``` + +This resourceBundle is merged internally with the global resourceBundle so that the menu can access both resources. + + +#### Validation + +In the dialog for adding/editing contacts the mvvmFX validation feature is used. +In [ContactFormViewModel.java](src/main/java/de/saxsys/mvvmfx/examples/contacts/ui/contactform/ContactFormViewModel.java) you can see +how to define validation logic. +In the [ContactFormView.java](src/main/java/de/saxsys/mvvmfx/examples/contacts/ui/contactform/ContactFormView.java) the connection to the UI is done. +This way the aspects of validation logic and validation visualization are separated. + + +#### Model-Wrapper + +In the [ContactFormViewModel.java](src/main/java/de/saxsys/mvvmfx/examples/contacts/ui/contactform/ContactFormViewModel.java) +the mvvmFX ModelWrapper is used to connect the Model and the ViewModel layers with reduced code size and coupling. + + + diff --git a/examples/todomvc-example/README.md b/examples/todomvc-example/README.md new file mode 100644 index 000000000..dfab1bffc --- /dev/null +++ b/examples/todomvc-example/README.md @@ -0,0 +1,11 @@ +# MvvmFX TodoMVC Example + +This example is influenced by the popular [TodoMVC.com]() example. +*TodoMVC* is a project that is used to compare different JavaScript/HTML5 libraries. +All example apps on the website implement the same requirements. +This makes comparing the different libraries and frameworks easier. +While the original TodoMVC is targeted for JavaScript and web frameworks we have +implemented a JavaFX variant using mvvmFX. + + +![screenshot](screenshot.png) diff --git a/examples/todomvc-example/screenshot.png b/examples/todomvc-example/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..f9ddde7c827c2d6d4a1e26aa84da7b318066ace9 GIT binary patch literal 10498 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 QZjnJ-L;qUA)jN;>A50aODgXcg literal 0 HcmV?d00001 diff --git a/mvvmfx-archetype/README.md b/mvvmfx-archetype/README.md index 324a3af50..27d6352c9 100644 --- a/mvvmfx-archetype/README.md +++ b/mvvmfx-archetype/README.md @@ -12,4 +12,4 @@ To use this archetype: -DartifactId=your.artifact.id -This creates an example mvvmfx project similar to the [mvvmfx-helloworld example](/examples/mvvmfx-helloworld). +This creates an example mvvmfx project similar to the [helloworld example](/examples/mini-examples/helloworld). diff --git a/mvvmfx-cdi/README.md b/mvvmfx-cdi/README.md index cccbfec03..05d430b78 100644 --- a/mvvmfx-cdi/README.md +++ b/mvvmfx-cdi/README.md @@ -5,18 +5,21 @@ This module is an extension for the [MvvmFX](https://github.com/sialcasa/mvvmFX) To create an application that is powered by CDI / Weld you have to extend `MvvmfxCdiApplication`: - public class Starter extends MvvmfxCdiApplication{ +```java +public class Starter extends MvvmfxCdiApplication{ - public static void main(String...args){ - launch(args); - } + public static void main(String...args){ + launch(args); + } - @Override - public void startMvvmfx(Stage stage){ - // your code to initialize the view. - } + @Override + public void startMvvmfx(Stage stage){ + // your code to initialize the view. } +} +``` -A simple example for this is available at [mvvmfx-cdi-starter](/examples/mvvmfx-cdi-starter). +An example application using CDI can be found at [contacts-example](/examples/contacts-example) and +at [welcome-example](/examples/mini-examples/welcome-example). If you prefer Guice as dependency injection framework you can use [mvvnfx-guice](/mvvmfx-guice). \ No newline at end of file diff --git a/mvvmfx-guice/README.md b/mvvmfx-guice/README.md index 2ca3eed34..10aa14033 100644 --- a/mvvmfx-guice/README.md +++ b/mvvmfx-guice/README.md @@ -7,19 +7,20 @@ It is based on [fx-guice](https://github.com/cathive/fx-guice). To create an application that is powered by Guice you have to extend `MvvmfxGuiceApplication`: - public class Starter extends MvvmfxGuiceApplication { +```java +public class Starter extends MvvmfxGuiceApplication { - public static void main(final String[] args) { - launch(args); - } - - @Override - public void startMvvmfx(final Stage stage) throws Exception { - // your code to initialize the view - } + public static void main(final String[] args) { + launch(args); } + @Override + public void startMvvmfx(final Stage stage) throws Exception { + // your code to initialize the view + } +} +``` -A simple example for this is available at [mvvmfx-guice-starter](/examples/mvvmfx-guice-starter). +A simple example for this is available at [welcome-example](/examples/mini-examples/welcome-example). If you prefer CDI as dependency injection framework you can use [mvvnfx-cdi](/mvvmfx-cdi). \ No newline at end of file