1.5.0
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 ofDelegateCommand
is now of typeObservableValue<Boolean>
instead ofObservableBooleanValue
. This can simplify the usage in some use cases. - #286: Introduces
WeakNotificationObserver
. This can be used as wrapper for theNotificationObserver
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
andFxmlView
. When an existing ViewModel instances was passed to theFluentViewLoader
when loading aJavaView
, theinitialize
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 ofFxmlView
s. For users ofJavaView
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 loadingJavaView
s. 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 ofequals
andhashCode
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.