@edvin edvin released this Aug 4, 2017 · 577 commits to master since this release

Assets 3


  • weak delegate for easier construction of weak references that need a deinit callback
  • The following extension functions (managedWhen, visibleWhen, hiddenWhen, disableWhen, enableWhen, removeWhen, onHover)
    now return the node the are called on.
  • TableColumn.cellFragment to match ListView.cellFragment + SmartTableCell which encapsulate cellFormat, cellCache and cellFragment
  • bindChildren(observableSet, converter) to complement the observableList version
  • sequentialTransition, parallelTransition builders (#373)
  • ObservableList<*>.sizeProperty keeps track of the number of items in an ObservableList
  • KeyboardLayout which can export to keyboard-layout-editor.com format
  • ObservableValue.onChangeOnce() and ObservableValue.onChangeTimes(n) will disconnect listener after n events
  • ViewModel.markDirty(property) to explicitly set a property dirty, for example when a bound list is changed internally
  • ViewModel supports binding maps
  • MutableMap.toProperty(key) { generateProperty() } writes back into the map on change


  • Form and Field properties got updated to the new more concise syntax propertyName() vs. property
  • LazyTreeItem will now only set children once after getChildren is called.
  • DataGrid properly updates when operating on a bound list (#385)
  • DataGrid reselects same index if item at selected index is removed (#386)
  • imageview builder now accepts null from an ObservableValue<String>
  • TreeView.cellFormat now unbinds the textProperty and the graphicProperty
  • Reified type parameter to ViewModel.bind() to solve properties that are null at the binding call (#365)
  • ViewModel.bind() for properties that are null at the binding call + now supports Long amd ObservableList as well
  • Fixed Chart.series() bug (#354)
  • External/synced changes to bound ViewModel properties should not affect dirty state (#358)
  • showModal/showWindow now resizes the window before calling onDock, so the View can override placement easier (#360)
  • Avoid extension function confusion on Configurable by introducing a new ConfigProperties subclass and changing extension functions to member functions (#362)
  • TreeTableView.resizeColumnsToFitContent() now waits until the skin is available instead of naively deferring to the next pulse
  • Nested tableColumns with valueProvider lambda now nest correctly


  • Kotlin 1.1.3-2
  • DataGrid receives focus on click
  • TableView refactoring, all cell manipulation functions are encapsulated in a SmartTableCell
  • ItemViewModel's bind methods accept properties that return nullable values (#389)
  • ViewModel binding mechanism has been rewritten and supports lists much better now