All Versions
51
Latest Version
Avg Release Cycle
48 days
Latest Release
-

Changelog History
Page 1

  • v1.7.21-SNAPSHOT Changes

    ๐Ÿ›  Fixed

    • #991: Workspace right drawer doesn't handle floating correctly

    ๐Ÿ”„ Changes

    โž• Additions

  • v1.7.20 Changes

    February 05, 2020

    ๐Ÿ›  Fixed

    • ๐Ÿ‘ป #991: App with NoPrimaryViewSpecified throws Exception in Application stop method
    • #1026 whenDockedOnce/whenUndockedOnce did not deregister correctly
    • #1115 Make InternalWindow aware of BorderPane parent (#1115)
    • #1134 Allow negative numbers in stripNonNumeric

    ๐Ÿ”„ Changes

    • openInternalWindow() was made public (#989)
    • Scope.deregister() clears EventBus subscriptions associated with a particular scope
    • App.stop() clears all EventBus subscriptions

    โž• Additions

    • ๐Ÿ— subscene builder
    • The fxml() delegate now accepts an InputStream, for loading FXML from DB or resources.stream("/my/classpath/to.fxml") (edvin/tornadofx-guide#107)
    • ๐Ÿ‘ Generic HttpEntity support in HttpClientRequest (#996)
    • JsonConfig.AddEmptyStrings controls if empty strings are added to Json objects or treated as null
  • v1.7.19 Changes

    May 12, 2019

    ๐Ÿ›  Another bugfix and small enhancement release!

    ๐Ÿ›  Fixed

    • SmartResize takes invisible columns into account (#889)
    • radiomenuitem didn't store value parameter properly (#737)
    • fitToWidth/fitToHeigh binds prefWidth/prefHeight instead of minWidth/minHeight properties (#886)
    • ๐Ÿ— menu/item builders now observes FX.ignoreParentBuilder
    • ๐Ÿ“‡ Renamed labelProperty to textProperty in AbstractField
    • Wizard next button was enabled even when current page was not complete (#960)
    • App primary view would continue to receive onDock/onUndock after its app instance was stopped and out of scope (#973)

    ๐Ÿ”„ Changes

    • ๐Ÿ”ง Opened up HttpClientEngine and HttpURLEngine for easier subclassing/configuration of the Rest engine
    • ๐Ÿ—„ Deprecated observableList() in favour of observableListOf(), and [List, Set, Map].observable() in favour of [List, Set, Map].asObservable() to be consistent with the Kotlin standard library.
    • Subdelegation of workspace button states (#894)
    • Kotlin 1.3.20
    • ๐Ÿ’… Moved all css helper extension functions from Node/Tab/Menu etc to Styleable (#944)

    โž• Additions

    • FX.messagesNameProvider property to dynamically compute the name of the resource bundle of a given component class. (#872)
    • FX.fxmlLocator function to provide custom FXML locations globally
    • โž• Added top level functions for creating (observableListOf(), etc) and converting (List<T>.asObservable(), etc) observable lists, sets and maps; and extension functions to work with them too (ObservableList<T>.shuffle(), etc).
    • ๐Ÿ‘ Submenu support for MenuButton (https://stackoverflow.com/questions/54393983/how-to-make-a-submenu-within-a-menubutton-in-javafx)
    • โž• Added cubiccurveTo builder (#911)
    • onLeftClick() and onRightClick()
    • ๐Ÿ— Convenience function builders for SimpleXXXProperty classes (#935)
    • โž• Added splitmenubutton builder
    • ๐Ÿ— togglegroup() builder accepts property parameter (#956)
    • โž• Added extensions and operators for vector math
  • v1.7.18 Changes

    December 28, 2018

    ๐Ÿ›  Fixed

    • ๐Ÿšš config no longer accepts null values, as the underlying Properties store won't allow them (#792). The set function that takes Pair still accepts null as the value, but will remove the key if the value is null.
    • the di() delegate no longer calls out to the DIContainer for every access, effectively caching the lookup (#837)
    • More efficient timer for delayed runLater calls (#836)
    • โš  runAsyncWithProgress cannot target an UI element with no parent, will no throw Exception with warning (#873)

    ๐Ÿ”„ Changes

    • App.scope is overridable
    • ๐Ÿ—„ DefaultScope deprecated, use FX.defaultScope instead
    • The Workspace inside the scope of a UIComponents will assume the Workspace it is docked in (#806)
    • Kotlin 1.3.11
    • bindSelected for ViewModel gets out modifier (#823)
    • Spinner.required() validator (#871)

    โž• Additions

    • TableView.onEditStart() and TableColumn.cancel() functions which can be used to intercept editing events
    • resources.media() to load a Media instance from resources
    • Media.play() shortcut which creates a MediaPlayer and plays the Media
    • Wipe and Dissolve view transitions
    • ๐Ÿ— tab builder assigns UIComponent.icon as Tab graphic
    • ComboBox.bindSelected() (#829)
    • TextInputControl.requiredWhen()
    • ๐Ÿ— colorpicker builder with property binding support
    • movable parameter for openInternalWindow() (#863)
  • v1.7.17 Changes

    August 19, 2018

    ๐Ÿ›  Fixed

    • OnDock Called Twice In openInternalWindow (#772)
    • TreeView.lazypopulate leafcheck logic was reversed (#773)
    • onCancel() is now called when reusing Wizard instance
    • ๐Ÿ‘€ Observable collection delegates removed because they shadow observable properties (See Properties.kt:L212)
    • ๐Ÿ’… The style property of ListCell will be cleared by the framework so it can be manipulated in cellFormat without side effects (https://stackoverflow.com/questions/51459371/custom-cell-format-listview-tornadofx-on-delete-item)
    • Escape closes window only works first time for Views (#764)
    • Reused modal didn't get stage icons set (#779)

    ๐Ÿ”„ Changes

    • Kotlin 1.2.60
    • ViewModel binding dirty tracking for ListProperty (https://stackoverflow.com/questions/50364458/tornadofx-bind-dirty-properties-of-different-view-models)
    • โš  Workspace.dock() will log a warning message if a child is docked while the workspace is not showing
    • SortedFilteredList.setAllPassThrough property controls if setAll should be forwarded to the underlying list (#344) and (#681)
    • ๐Ÿ‘ป EventBus deliveries will continue even after a subscriber throws exception
    • UIComponent callback onBeforeShow is called for all top level UIComponents
    • Primary View onDock is now called after the stage is shown. Now it aligns with the timing for secondary windows.
    • All asyncItems function parameters operate on FXTask
    • ๐Ÿšš removeFromParent now supports TreeItem (#776)

    โž• Additions

    • UIComponent.whenUndockedOnce() and whenDockedOnce callbacks
    • onTabSelected callback in UIComponent when connected to a TabPane
    • ๐Ÿ— finally(callback) for runAsync and other task builders
    • โš  Window.aboutToBeShown property avoid false positives for invisible Workspace warning (#755)
    • โฑ Slideshow slides supports optional timeout, which will advance to the next slide using the Slide transition
    • ๐Ÿ’… importStylesheet now supports file, http and https in addition to classpath resources (#762)
    • ๐Ÿ— raduimenuiutem builders now accepts value property (#737)
  • v1.7.16 Changes

    May 13, 2018

    ๐Ÿ›  Fixed

    • โš™ runAsyncWithProgress must Unwrap ToolBar parent (#687)
    • Calling close() inside InternalWindow would also close the parent
    • placeholder for list type controls should not require list type parameter
    • โž• Added warning log message when WorkspaceApp is called with a Workspace subclass as main view paramter
    • ๐Ÿ›  Fix bug caused by not properly removing nodes from ToolBar
    • ๐Ÿ›  Fixed issues generating CSS for dashed strokes in shapes and borders
    • ๐Ÿ— contextmenu builder returns ContextMenu instance instead of EventTarget (#702)
    • ๐Ÿ— togglebutton and radiobutton builders moved from Node to EventTarget (#716)
    • Workspace now undocks closed tabs correctly (#718)

    ๐Ÿ”„ Changes

    • Kotlin 1.2.41
    • Workspace.navigateForward() made public
    • โž• Added missing pseudoclasses to CSS DSL
    • HostServices is now retrieved from Application.getHostServices() instead of sun/internal API

    โž• Additions

    • ๐Ÿ”Œ --dicontainer=diContainerClass parameter allows assignment of DIContainer from command line (edvin/tornadofx-idea-plugin#56)
    • readonly and cancel pseudoclasses added to type safe CSS
    • โž• Added add/remove/toggle class for Tab
    • ContextMenu.radiomenuitem (#646)
    • mutableList can now be bound to an ObservableMap
    • ๐Ÿ‘€ CssSelectionBlock now has all relation selectors (see CssSubRule.Relation)
    • โœ… TableView DND Reorder testapp
    • onCancel callback in Wizard (#712)
    • combobox.editableWhen() - also works for DatePicker since it extends ComboBoxBase (#717)
    • editableWhen() added for TableView, TreeTableView, ListView
  • v1.7.15 Changes

    February 18, 2018

    ๐Ÿ”จ Another good mix of fixes and features, plus another round of huge internal refactorings to improve code quality and consistency.

    Important note : The TableView column builder for readonly non-observable properties was renamed to readonlyColumn because it shadowed the (much more important) builder for observable properties. This is a breaking, but nessescary change. Apologies for not catching this as the new builder was implemented. Read more about it in #599

    ๐Ÿ›  Fixed

    • onEditCommit {} listens for changes in nested columns
    • UIComponent.close() should be able to close primary stage as well (#622)
    • SmartResize.Policy manual resize broken (#570)
    • TableView bound to ListProperty should rebind when value changes
    • ๐Ÿ‘ Allow calling Workspace.disableNavigation() when workspace is empty
    • ๐Ÿ‘ Thread pools are reinitialized on App.start() to support stop/start multiple times within the same JVM
    • ServiceLoader provided interceptors were added every time an App class was initialized
    • inheritParamHolder and inheritScopeHolder are cleared on Application stop (#602)
    • ๐Ÿ‘ป smartResize throws exception for hidden columns (#606)
    • The getters and setters of horizontalPadding and verticalPadding did not correspond

    ๐Ÿ”„ Changes

    • Kotlin 1.2.21
    • ๐Ÿ”จ Many internal refactorings
    • AnchorPaneConstraint properties now accept any Number, not just Double
    • AbstractField.textProperty was renamed to labelProperty to avoid confusion with the textProperty() exposed by textfields inside of a field
    • 0๏ธโƒฃ ItemViewModel.bind defaultValue parameter
    • ๐Ÿ— Node builders inside of MenuItem will automatically assign the node to the graphic property of the menu item
    • The App class (main application entrypoint) no longer requires a primary view parameter, in case you want to show a tray icon or determinine what view to show some other way
    • ๐Ÿ— Renamed tableview column builder for readonly non-observable properties to readonlyColumn (#599)
    • ๐Ÿ›  Renamed Node.index to Node.indexInParent to avoid subtle bugs (Partly fixes #598)
    • โœ‚ Removed CheckBoxCell in favor of inline cellFormat
    • โšก๏ธ ValidationContext.validate has a new parameter failFast, which can optimize the validation-process.
    • (Linked)HashMaps are generalized to (Mutable)Map
    • ArrayList are generalized to (Mutable)List

    โž• Additions

    • StackPane.connectWorkspaceActions() along with StackPane.contentProperty and various Workspace related functions and properties (#604)
    • TextInputControl.filterInput allows you to discriminate what kind of input should be accepted for a text input control
    • String.isLong(), isInt(), isDouble() and isFloat()
    • ๐Ÿ— checkmenuitem builder accepts string for keycombination and selected property
    • Node.index will tell you the Node's index in the parent container
    • ๐Ÿ— placeholder builder for TableView, TreeTableView, ListView
    • obserableList() creates FXCollections.observableArrayList
    • ๐ŸŒ ResourceBundle.format() provides a short way to insert translations with variables in them
    • ocpr is now available as extension function: attachTo
    • Insets.copy(), Intsets.horizontal, Intsets.vertical, Intsets.all
    • SortedFilteredList forwards setAll() to backing list
    • withEach/mapEach/mapEachTo are the receiver-functions of forEach/map/mapTo.
  • v1.7.14 Changes

    December 16, 2017

    ๐Ÿš€ This release brings amongst other things, a fix to the long standing runAsync bug which could case the success and fail callbacks to not run if the work in runAsync completed (very) fast.

    ๐Ÿ›  Fixed

    • runAsync would skip the success/fail steps if no work was done in the op block
    • ๐Ÿ’… TableView Pojo Column references support boolean "is" style properties (#560)
    • TabPane.tab inside of an UIComponent is now scope aware
    • TreeView.lazyPopulate should never assign null list if filter results in no items

    ๐Ÿ”„ Changes

    • Kotlin 1.2.10
    • ๐Ÿ— Node builders inside of ButtonBase will automatically assign the node to the graphic property of the Button

    โž• Additions

    • ConfigProperties (config) is now Closable so it can be used with use
  • v1.7.13 Changes

    December 08, 2017

    ๐Ÿ›  Another bugfix and stability enhancement release as we're gearing up to Java 9 compatibility!

    ๐Ÿ›  Fixed

    • Navigation button issue when already docked view was docked again (#526)
    • 0๏ธโƒฃ Internal thread pools are shutdown on app exit. Running threads in the default thread pool will still block application stop.
    • ComboBox.makeAutoCompletable() inspects listView.prefWidth for being bound before attemting to set it (#530)
    • Wizard.canGoBack override caused NPE (#211)

    ๐Ÿ”„ Changes

    • Kotlin 1.2.0
    • ๐Ÿ‘ ItemViewModel.bindTo(itemFragment) supports all item fragments now, not just ListCellFragment
    • 0๏ธโƒฃ lambda's that return unit are no longer nullable. use the default-lambda instead
    • ChildInterceptor is now an Interface.
    • Component.messages are fetched using the classloader that defined the Component subclass (#553)

    โž• Additions

    • ๐Ÿ‘ cellFragment support for DataGrid
    • ObservableValue.isBlank() and ObservableValue.isNotBlank() which returns BooleanBinding. Useful for binding to TextField enabled/visible state
    • โž• Added owner and title parameters to alert and other dialog builders (#522)
    • TextInputControl.editableWhen
    • multiSelect() for TreeView, TreeTableView, TableView and ListView
    • ๐Ÿ’… Stylesheets can now be added specificly to a Parent- Node with addStylesheet
  • v1.7.12 Changes

    October 30, 2017

    ๐Ÿš€ This release contains an enormous amount of internal refactoring (not mentioned in the changelog) as well as some neat new features and bug fixes :)

    ๐Ÿ›  Fixed

    • ๐Ÿ›  Fixed #434 leaf nodes are now getting set as expected for lazypopulate.
    • ๐Ÿ’… Style builder can be applied to PopupControl, Tab, TableColumnBase (#476)
    • ๐Ÿ‘ Better handling of Column.makeEditable() for properties that implement Property

    ๐Ÿ”„ Changes

    • ๐Ÿ”จ Refactoring: Moved all extension functions and properties targeting TreeView
      from Nodes.kt to TreeView.kt.
    • ๐Ÿ— alert builder accepts optional owner parameter (#483)

    โž• Additions

    • fitToParentHeight/Width/Size as well as fitToHeight/Width/Size(region) helpers (#519)
    • beforeShutdown allows you to register shutdown hooks
    • DataGridPaginator component to help with pagination for DataGrid
    • โš™ runAsync supports daemon parameter to control thread characteristics (#508)
    • Node.runAsyncWithOverlay
    • ๐Ÿš€ Latch, a subclass of CountdownLatch that exposes a lockedProperty and provides immediate release ability
    • ๐Ÿ’… Inline type safe stylesheet on Parent using the stylesheet builder
    • Tab.close()
    • ๐Ÿ‘ JsonBuilder.add() supports Iterable (Turned into JsonArray)
    • โž• Added customitem menu item builder (#488)
    • 0๏ธโƒฃ The default lefCheck for lazypopulate is now also recognizing an empty list as a leaf.
    • ๐Ÿ— menubutton builder (#461)
    • ๐Ÿ— MenuButton.item builder
    • โž• Added Fragment support forTreeCell