Skip to content

1.5.0

Compare
Choose a tag to compare
@manuel-mauky manuel-mauky released this 16 Jun 16:24
· 242 commits to stable since this release

This version contains many improvements and small features. Additionally we are releasing a first version of our Scopes feature.

New Features

  • After a lot of work durring this release cycle we have introduced a first version of our Scopes feature. A Scope is a data context that can be used by multiple components to share common data without tight coupling between each other.
    While there are still some open questions and issues with this feature (#383) we have decided to release it so that potential users can try it out and provide feedback. This means the Scopes feature is in BETA state at the moment.
    See the wiki for more informations on how to use scopes.

Small Features and Improvements

  • #384: The executable parameter of DelegateCommand is now of type ObservableValue<Boolean> instead of ObservableBooleanValue. This can simplify the usage in some use cases.
  • #286: Introduces WeakNotificationObserver. This can be used as wrapper for the NotificationObserver to prevent memory leaks. This is similar to WeakChangeListener of JavaFX. The usage is described in the wiki.
  • #369: The DefaultNotificationCenter is now public and has a public constructor. This can be useful for testing purposes.
  • #356: The initialization of an existing ViewModel instance was inconstent between JavaView and FxmlView. When an existing ViewModel instances was passed to the FluentViewLoader when loading a JavaView, the initialize method of the ViewModel instance was invoked by the framework in previous versions. Now this isn't the case anymore. This behaviour is constistent with the existing behaviour of FxmlViews. For users of JavaView this may be a breaking change because existing logic that depend on this behaviour may not work anymore.
  • #350: The FluentViewLoader was missing the possibility to provide an existing CodeBehind when loading JavaViews. This is now fixed.

ModelWrapper

  • #376: The order in which the ModelWrapper commits and reloads values is now deterministic. In the past the order wasn't specified but now can be assumed to be deterministic. Thanks to @sideisra.
  • #372: The ModelWrapper now has an additional constructor taking an ObjectProperty of the wrapped model type. When the value of the property changes the ModelWrapper will reload it's internal values automatically. Thanks to @sideisra.
  • #366: The ModelWrapper has now the possibility to update the default values for it's fields. This can be done by calling useCurrentValuesAsDefaults method. Thanks to @sideisra.

Validation

  • #364: The ValidationMessage class has now a proper implementation of equals and hashCode methods which makes testing of validation logic easier.
  • #359: The ValidationMessage class has now a public constructor to support subclassing.

Bugfixes

  • #376 Fixed a potential memory leak in the direct notification mechanism between ViewModel and View due to the fact that the ViewModel instance was used as channel identifier.