@edvin edvin released this Jun 13, 2017 · 665 commits to master since this release

Assets 3

It's that time of month again :) TornadoFX 1.7.6 brings many small improvements and bug fixes in addition to Digest Authentication support for the REST Client.

The feature set is pretty complete by now, so we will turn our attention to even better plugin support and general improvements. Feature requests are still very much welcome of course!


  • UIComponent.forwardWorkspaceActions(target) will override the current receiver of button states and action callbacks
  • replaceWith(component: KClass) accepts sizeToScene and centerOnScreen
  • titledpane builder that accepts the title as ObservableValue
  • TaskStatus.completed and FXTask.completedProperty can be used to listen to changes in completion state of a task
  • runLater with optional delay: runLater { } and runLater(10.seconds) { .. }
  • ObservableValue.awaitUntil waits on the UI thread without blocking until a given value is set before resuming execution
  • ViewModel.bind can create observable properties from mutable vars: val name = bind(MyObject::name)
  • Rest.Response.Status enum with all official http status codes. (#330)
  • hbox and vbox builders now have optional alignment parameter
  • Workspace.dockOnSelect Will automatically dock the given UIComponent if the ListMenuItem is selected.
  • Rest client supports Digest Authentication
  • Inline commands can be defined with command { } builder pattern
  • hyperlink builder has optional graphic parameter
  • UIComponent has currentStage, setWindowMinSize(width, height) and setWindowMaxSize(width, height)
  • DrawerItem has expandedProperty and expanded var (#332)
  • UIComponent.replaceWith has centerOnScreen parameter
  • Shortcut overload for Commands: shortcut(shortcut, command, param)


  • TableColumn.useTextField() accepts Property<> - no longer requires ObjectProperty<>
  • Workspace navigation now behaves more like a browser with regards to back/forward button functionality
  • ConcurrentModificationException in EventBus fire mechanism
  • UIComponent.headingProperty is bound to titleProperty by default, will be unbound if assigned value
  • DefaultErrorHandler correctly handles errors with no stacktrace available (#328)
  • Non-bound properties inside ViewModels can locate it's ValidationContext, and hence can now be used with validators
  • SortedFilteredList will not overwrite the backing list when column sorting is enabled in TableView (setAll disabled) (#344)
  • RowExpanders containing nested TableViews no longer inherits white label text when owning row is selected
  • Calling cellFormat on a TableCell that already has a formatter will now add the new formatter as a decorator instead of overwriting the old
  • cellDecorator only decorates cells with items. It previously ran also when a cell item became null


  • Kotlin 1.1.2-5
  • Workspace will preemptively register for current scope in init()
  • runAsyncWithProgress will display the progress indicator in the graphic property if the parent is Labeled
  • Cleaned up menu and item builders, might require parameter adjustment in some cases
  • UIComponent.currentWindow is fetched from root.scene.stage, falls back to modalStage or primaryStage
  • ListMenu.activeItem accepts null to signal that no menu item is active
  • Removed children parameter from hbox and vbox builders - they were early remnants from before we realized how powerful builders could be :)
  • action delegate no longer has ActionEvent as parameter so it can be used for no-args function references. Fallback to setOnAction if you need the event.
  • Injectable was a misnomer and has been deprectated in favor of ScopedInstance
  • TaskStatus no longer disconnects the current task when the task is completed