/standbein

Lightweight application framework based on the idnadrev application

Primary LanguageJava

Standbein Readme

About

Standbein is a lightweight wrapper around JavaFx to provide a starting point for small rich client applications. The main goals are:

  • Use dependency injection (via Guice)

  • Split the application into small parts, so called Activities, that are disconnected from each other

  • Control the lifecycle and threads of activities

  • Give the user as much freedom as possible to use or not use the given features (and therefore provide only the essential stuff)

Testing/using

Currently the standbein library is still in development. Must of its api is in use since over a year and is considered quite stable. However I still want to have the possibility to simplify and refactor stuff.

Therefore it is not yet in any maven repository and you have to install it into your local repository:

$ ./gradlew publishToMavenLocal

This command will install it in you local maven repository: ~/.m2

Features

  • Service infrastructure: to initialize your infrastructure at startup time (eg. start embedded db, hibernate, weld whatever)

  • Version upgrade detection: register upgrade from one version to another that are executed on the client (change ddl, extract zipfiles of data)

  • Lifecycle control via activities (see below)

  • slight preferation(or maybe even enforcement) of MVC style programming, but you are not bound to

  • Eventbus: send event from any class to your controllers (or who ever is listening) …​decouple…​

  • Validation: simple validation framework

  • Localization: define your base localisation properties. Additionally define controller local property files (to avoid the messy 10000+ line files)

  • Designed to use dependency injection as much as possible (This is still a UI framework and it depends on JavaFX which hates testability and DI)

  • Binding: bind labels or textfields (or whatever your stringconverter can handle) to a model property

  • Predefined refresh handling: If needed you can implement your own datasource which will be loaded on entry of an activity

Examples

Documentation