0.9.0
#44
Replies: 1 comment 7 replies
-
What performance is expected with a large number of elements in the interface? Are there any examples? |
Beta Was this translation helpful? Give feedback.
7 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
Features
New Constraint Layout Fully Adopted
The new layout system was introduced in 0.8.2 alongside the former approach is now fully adopted and the old system has been removed. You can get more details on how the new system works in the previous release notes. This release does bring a few additional changes as well. The main difference is that parent constraints are now "constant" by default. This means constraints like the following will NOT modify the parent bounds:
However, you can still make parent properties writable by being explicit as follows:
There were also some improvements to this new layout engine. Constraints now default all parent properties to read-only. This means it is no longer possible to use the
readOnly
field on parent properties. Instead, each can be turned into a "writable" value using the newwritable
field on each.Revamped Animation APIs
The Animation APIs have been updated to make them more powerful and easier to use. You can now animate a lot more data types, with built-in support for common ones like (Int, Float, Double, Size, Position, Rectangle, Color, and Measure). It is also easy to add new types when they can be converted to a numeric representation. The animation APIs also let you create animatable properties, and provides a few different types of animations, including tweens, key-frames, and repetition.
New Diff API for ObservableList
A new list diff algorithm (based on Google's diff-match-patch) was introduced internally in 0.8.2 to support the new constraint system. It has now been adopted as the mechanism for notifying about changes to
ObservableList
and related types (i.e.FilteredList
). This algorithm scales better and more intuitive than what was in place before. But the APIs are very different.Old
New
The new API indicates changes via the
Differences
interface. This interface lets you iterate over a series ofDifference<T>
instances that indicate what change was applied to the list at a given index.Differences
also let you compute moves optionally in case they matter to your handling of changes.Improved Tables and TreeTables
ScrollPanel
. In this case they willBasicMutableTableBehavior
now shows sort order via an iconEqualSizePolicy
andProportionalSizePolicy
types to support different table header sizing strategiesKeyValueTable
to simplify showing Maps in tabular formBasicTreeTableBehavior
now takes aniconFactory
instead of an icon colorTreeTable
now scales the contents of its internal ScrollPanel likeTable
doesTableHeaderCell
(used for basic table behaviors) now repaints when disabled/enabled to update colors correctly.TableHeaderCell
no longer changes color on pointer pressed if its column is not movableTableHeaderCell
no longer uses theGrabbing
icon when draggingBasicMutableTableBehavior
now reflects initial sorting of its table.New FileSelector Control
Form Controls
slider
,rangeSlider
,circularSlider
andcircularRangeSlider
controlsfile
andfiles
controlsAPIs
constrain(videw: View, within: Rectangle)
method with faster<T: Positionable> Iterable<T>.constrain(using: ConstraintDslContext.(Bounds) -> Unit, within: (Int, T) -> Rectangle)
ifNull
utility functioniconInset
which indicates the padding around the icon (does not apply to icon-text spacing gap).simpleTableCellEditor
function for creatingTableEditor
s that modify a single cell at a time.ConvexPolygon.map
function to create a new polygon by transforming anotherItemVisualizer<R, C>.after(mapper: (T) -> R): ItemVisualizer<T, C>
ExpandableItem
interface for use with Tree and related views.path(data: String)
function, so it can returnnull
cancelable
delegatePerformance
readOnly
usage faster.Fixes | Improvements
HorizontalFlowLayout
when container is emptyoptionalRadioList
now allows deselection of its itemsTable
that could lead to an incorrect index being used when generating a rowTreeTable
that could lead to an incorrect index being used when generating a rowFilteredList
when filter isnull
MutableTable
keeps itself sorted when its model changes.cellAlignment
to be ignoredTreeTable
whencolumnSizePolicy
changed before it has abehavior
View.scrollTo
now handles nestedScrollPanel
sidealSize
Dependencies
This discussion was created from the release 0.9.0.
Beta Was this translation helpful? Give feedback.
All reactions