All Versions
51
Latest Version
Avg Release Cycle
48 days
Latest Release
-
Changelog History
Page 2
Changelog History
Page 2
-
v1.7.11 Changes
September 17, 2017๐ Fixed
- Accessing last item in DataGridFocusModel was not possible
- ๐ Severe performance bug in SmartResize policy causing it to add exessive number of listeners (#460)
๐ Changes
- โก๏ธ Parameters passed to Views will now be updated if you do another find() (#443)
- ๐ป SingleAssign now throws UninitializedPropertyAccessException instead of Exception
- โ Removed inc() and dec() from properties
- rangeTo from properties is now lazy
- loadFont size parameter is changed from Double to Number
- ๐จ Lots of internal refactoring thanks to @tieskedh
- Kotlin 1.1.4
- Wizard and ViewModel are now internationalized
- ๐ imageview() builder accepts ObservableValue<Image?> (edvin/tornadofx-guide#43)
- โ added option to increment and decrement spinners by scrolling (#425)
- onUndock is now called for the View currently embedded as the scene root of a Window when it closes (#427)
- Launch helper for nicer main functions (#431)
โ Additions
- TreeTableView.bindSelected()
- CheckMenuItem.bind()
- ๐ Button builders with text property support
- Collection Property Delegates (#454)
- Workspace.create button and corresponding UIComponent onCreate callback and creatable property
- Lots of reified functions
- 0๏ธโฃ The default ErrorHandler shows structured information about failed HTTP requests
- ๐ป RestException containing request, response and the underlying exception
- โ Added JsonBuilder.add(key, Iterable) to avoid having to call toJSON() on it (#414)
- โช ViewModel partial rollback (#420)
- ๐ FX.addChildInterceptor that can veto or custom add builder children to their parent. Useful for MigPane for example.
- Tab.select() for easier selection of tab without having to access tabPane.selectionModel
- TabPane.contains(UIComponent) and Iterable.contains(UIComponent)
- Override -fx-accent with type-safe CSS property accentColor
- Component.paramsProperty can be used to detec changes to incoming parameters (overriden on new find)
-
v1.7.10 Changes
August 13, 2017๐ This is a bug fix release to address a few regressions introduced in 1.7.9.
๐ Fixed
- Fieldset captions are gone (#399)
- Fieldset padding is missing (#401)
- AutoCompleteComboBoxSkin no longer throws upon reconfiguration
๐ Changes
- AutoCompleteComboBoxSkin: Added an option to use automatic width for the popup
-
v1.7.9 Changes
August 04, 2017โ Additions
- 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 completement the observableList version
- ๐ sequentialTransition, parallelTransition builders (https://github.com/edvin/tornadofx/issues/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
๐ Fixed
- โก๏ธ 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 (https://github.com/edvin/tornadofx/issues/385)
- ๐ DataGrid reselects same index if item at selected index is removed (https://github.com/edvin/tornadofx/issues/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 (https://github.com/edvin/tornadofx/issues/365)
- ๐ ViewModel.bind() for properties that are null at the binding call + now supports Long amd ObservableList as well
- ๐ Fixed Chart.series() bug (https://github.com/edvin/tornadofx/issues/354)
- ๐ External/synced changes to bound ViewModel properties should not affect dirty state (https://github.com/edvin/tornadofx/issues/358)
- ๐ showModal/showWindow now resizes the window before calling onDock, so the View can override placement easier (https://github.com/edvin/tornadofx/issues/360)
- ๐ง Avoid extension function confusion on
Configurable
by introducing a newConfigProperties
subclass and changing extension functions to member functions (https://github.com/edvin/tornadofx/issues/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
๐ Changes
- 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 (https://github.com/edvin/tornadofx/issues/389)
- ๐ ViewModel binding mechanism has been rewritten and supports lists much better now
-
v1.7.8 Changes
June 25, 2017โ Additions
- Stage.uiComponent()
- ViewModel.clearDecorators()
- Extensions for StringProperty and BooleanProperty
๐ Fixed
- ๐ Improved ProgressIndicator size for
runAsyncWithProgress
๐ Changes
- Kotlin 1.1.3
openModal
andopenWindow
returns the Stage- ๐
dialog
builder operates on a StageAwareFieldset so it can close the dialog easier by callingclose()
- ๐ All JSON extractor functions support vararg keys, will pick the first available (https://github.com/edvin/tornadofx/issues/350)
- ValidationContext.validate(decorateErrors = false) clears decorators
- Property.plus(), minus(), etc now return Bindings instead of Properties
-
v1.7.7 Changes
June 15, 2017โ Additions
- Extension functions to NumberProperty classes (obsNumOne + obsNumTwo etc)
๐ Fixed
- โช Reverted cellFormat change from 1.7.6 (https://github.com/edvin/tornadofx/issues/349)
- Accessing json properties from app.config inside a view looked up view.config instead of app.config (https://github.com/edvin/tornadofx/issues/346)
๐ Changes
-
v1.7.6 Changes
June 13, 2017โ Additions
- UIComponent.forwardWorkspaceActions(target) will override the current receiver of button states and action callbacks
- replaceWith(component: KClass) accepts
sizeToScene
andcenterOnScreen
- ๐ 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 { }
andrunLater(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. (https://github.com/edvin/tornadofx/issues/330)
- ๐
hbox
andvbox
builders now have optionalalignment
parameter Workspace.dockOnSelect
Will automatically dock the givenUIComponent
if theListMenuItem
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)
andsetWindowMaxSize(width, height)
- DrawerItem has
expandedProperty
andexpanded
var (https://github.com/edvin/tornadofx/issues/332) - UIComponent.replaceWith has
centerOnScreen
parameter - Shortcut overload for Commands:
shortcut(shortcut, command, param)
๐ Fixed
- 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
- 0๏ธโฃ UIComponent.headingProperty is bound to titleProperty by default, will be unbound if assigned value
- 0๏ธโฃ DefaultErrorHandler correctly handles errors with no stacktrace available (https://github.com/edvin/tornadofx/issues/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) (https://github.com/edvin/tornadofx/issues/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
๐ Changes
- Kotlin 1.1.2-5
- Workspace will preemptively register for current scope in init()
runAsyncWithProgress
will display the progress indicator in thegraphic
property if the parent isLabeled
- ๐ Cleaned up menu and item builders, might require parameter adjustment in some cases
- UIComponent.currentWindow is fetched from
root.scene.stage
, falls back tomodalStage
orprimaryStage
- ๐ฆ ListMenu.activeItem accepts null to signal that no menu item is active
- โ Removed
children
parameter fromhbox
andvbox
builders - they were early remnants from before we realized how powerful builders could be :) action
delegate no longer hasActionEvent
as parameter so it can be used for no-args function references. Fallback tosetOnAction
if you need the event.Injectable
was a misnomer and has been deprectated in favor ofScopedInstance
- TaskStatus no longer disconnects the current task when the task is completed
-
v1.7.5 Changes
May 19, 2017Important notice: The
field
builder used to operate on theinputContainer
inside theField
. This has been changed so that it now operates on the field itself. If you did something likeparent.isVisible = false
to hide the field, you must now change your code toisVisible = false
. This new behavior is more as one would expect and hopefully the change won't cause any trouble to anyone.โ Additions
- ๐ ListMenu.item builder gets tag parameter (can be used to identify the item)
- EventTarget.tag and tagProperty, useful for identifying Tabs, ListMenuItem and other components used in "selected" situations.
- Map.queryString creates an URL encoded query string from a Map. Useful for REST calls.
- Tab.enableWhen/disableWhen/visibleWhen
- ๐ TabPane.tab builder takes optional tag parameter. If no text parameter is supplied, tag.toString() is used
- ๐จ Node.cache will create and cache a node inside another node. Useful for Cell implementations to reduce memory footprint.
graphic = cache { createNode() }
- ๐ Rest client supports PATCH (https://github.com/edvin/tornadofx/issues/320)
- โ warning(), error(), confirmation() and information() shortcuts to alert()
- Command bindings accepts optional parameter using invoke:
button { command = someCommand(someParam) }
orbutton { command = someCommand with someParam }
- ๐ ChoiceBox now supports Commanding
- ๐ TextField now supports Commanding
- TreeTableSmartResize.POLICY - activate with smartResize() (https://github.com/edvin/tornadofx/issues/316)
- โ removeWhen/visibleWhen/enableWhen/disableWhen etc functions now also take an observable instead of a function that returns an observable.
- ๐ The
label
builder is now capable of taking a graphic nodelabel("some text", graphic)
- ComboBoxBase.required() validator
- SmartResize.POLICY can now be installed by calling
smartResize()
on anyTableView
- SmartResize will automatically resize if the itemsProperty of the TableView changes value
- Workspace.showHeadingLabelProperty controls whether the heading is shown in the Workspace toolbar or not
- TableView/TreeTableView requestResize() will reapply SmartResize policy, useful after content change
- Column.makeEditable() works for all number subclasses
- Workspace
navigateForward
andnavigateBack
explicit functions - ๐ Style builder for MenuItem (https://github.com/edvin/tornadofx/issues/327)
- ๐ imageview builder overloads that accepts observable urls or images
๐ Fixed
- ๐ AutoJsonModel supports String types
- HTTPUrlConnection based Rest Client Engine will read data from response even when not successful
- ๐ Support view reloading in OSGi environment
- Live Views did not reload changed classes correctly
- ๐ Fixed equals/hashCode in FXEventRegistration, could cause events to not fire on similar components
- ๐ป lazyPopulate child factory was called on UI thread (https://github.com/edvin/tornadofx/issues/318)
- SmartResize.requestResize() some times resulted in misaligned column headers
- ๐ JsonModelAuto supports more types and doesn't produce duplicates (before: name and nameProperty - now: just name)
- SmartResize flickers (https://github.com/edvin/tornadofx/issues/321)
- ๐ Workspace navigation (viewPos index) stays intact even when views are manually removed from the
viewStack
- ObservableValue.select() notice changes to outer property (https://github.com/edvin/tornadofx/issues/326)
- Ignore duplicate onUndock call when both parent and scene are set to null
๐ Changes
- โ Removed Workspace experimental warning
- alert content parameter is now optional
commandProperty
andcommandParameterProperty
are now writable so you can choose between bind or assign- โ CSS warning should not be issued in OSGi environment, since bundle activator installs CSS URL Handler
- ๐ All shape builders accepts
Number
instead ofDouble
so you can writecircle(10, 10, 5)
instead ofcircle(10.0, 10.0, 5.0)
- ๐ ComboBox.validator moved to ComboBoxBase.validator to support ColorPicker and DatePicker as well
- โ Removed InstanceScoped and removed it from Wizard. It was not needed.
- ๐ Deprecated
menuitem
builders in favor ofitem
builders, which work the same way as other builders with respect to action (IDEA provides quick fix) - TreeView.lazyPopulate() is now data driven. If the returned list is observable, changes will be reflected in the tree (https://github.com/edvin/tornadofx/issues/317)
- ๐ field builder now operates on the field itself instead of the inputContainer. You can now hide() the field directly in the function reference.
- ๐ TableColumn.useProgressBar() supports Number subtypes instead of only Double
-
v1.7.4 Changes
April 28, 2017โ Additions
- ๐
wrapper
builder which builds a node around the existing View root - ๐
ListMenu
control and correspondinglistmenu
builders - ๐
validator
function takes optionalmodel
parameter for use with properties not currently registered with the ViewModel (FXML support) - ๐ง
ToggleGroup.selectedValueProperty()
is a writable property of any type you choose. Settogglebutton(value)
orradiobutton(value)
to configure the value represented by each toggle. Wizard.enterProgresses = true
will go to next page when complete and finish on last page (https://github.com/edvin/tornadofx/issues/310)ViewModel.onCommit(commits: List<Commit>)
callback with more information about the commit- ๐ imageview builder that takes an image in addition to the existing one that takes a url
- ๐ fxml delegate supports setting optional root element
- ๐ Improved Java interop
- Java version of FX.find() can be called without specifying scope
Tab.whenSelected
callback when the tab is selected
๐ Fixed
- 0๏ธโฃ Java version of Component.find() defaults to current component scope instead of DefaultScope
- NPE in layout debugger (https://github.com/edvin/tornadofx/issues/305)
๐ Changes
- Kotlin 1.1.2
- findParentOfType accepts subclasses
- splitpane() now has an optional orientation parameter
- Clicking outside of a modal InternalWindow click now play an error sound to indicate modality (https://github.com/edvin/tornadofx/issues/308)
- ๐
-
v1.7.3 Changes
April 19, 2017โ Additions
- ๐ ScrollPane.edgeToEdge boolean var to control the "edge-to-edge" style class (https://github.com/edvin/tornadofx/issues/302)
- ๐ Android SDK compatibilty (See https://github.com/edvin/tornadofx-android-compat)
- โ Added
baseColor
CSS property lazyContextmenu
to add context menus that instantiate when the menu actually opens.
๐ Changes
- ๐ Improved Java interop
- โ Removed faulty choicebox builder and replaced it with one similar to the combobox builder
- ๐
authInterceptor
was deprecated in favor of better namedrequestInterceptor
๐ Fixes
- ๐ Fixed ViewModel validation bug for ComboBox, ChoiceBox and Spinner
- 0๏ธโฃ Autocomplete ComboBox listview matches width of ComboBox by default
- JsonStructure.save(path) actually saves (https://github.com/edvin/tornadofx/pull/300)
-
v1.7.2 Changes
April 14, 2017shortpress
/longpress
actions (https://github.com/edvin/tornadofx/pull/286)- ๐ Form layout supports arbitrary layout containers inside fieldsets (to support multiple rows of fields or any other form layout)
- ๐ radiomenuitem builder default argument for keyCombination (https://github.com/edvin/tornadofx/issues/298)
- ๐ง ViewModel bindings configured with autocommit must pass validation before the value is committed
- find takes op block to let you operate on the found Component directly
- Node.toggleButton behaves correctly if no togglegroup is available (https://github.com/edvin/tornadofx/issues/296)
- ViewModel partial commit and validate:
commit(field1, field2)
- Wizard component
- โก๏ธ ViewModel.valid property will be updated as validators are added
- ๐ง UIComponent.closeable property and corresponding default configuration in
Workspace.defaultCloseable
- TabPane.add(SomeView::class) will bind towards title and closeable state of the UIComponent (https://github.com/edvin/tornadofx/issues/294)
- TreeView.populate() is now data driven. If the returned list is observable, changes will be reflected in the tree