Bindings with arbitrary expressions

ScalaFX v.8.0.92-R10 brings ability to create bindings using custom expressions. For instance, you can binding expression that converts strings to lower case:

import scalafx.beans.property.StringProperty

val a = new StringProperty()
val b = Bindings.createStringBinding(
          () => Option(a.value).getOrElse("").toLowerCase(), a)

a.value = "HEllO"
println("a: " + a.value)
println("b: " + b.value)

Running the above will result in output:

a: HEllO
b: hello

ScalaFX 8.0.92-R10 Released

ScalaFX 8.0.92-R10 was tested against JavaFX 8.0u92. It is contains some new features and bug-fix release. Scala 2.10, 2.11, and 2.12 are supported.

Compatibility braking changes:

  • Issue #107: Remove code that was deprecated before release of ScalaFX 1.0.0 M1

New features and improvements:

Bug fixes:

  • Issue #69: SFX-8: ColorfulCircles and SimpleColorfulCircles demos fail.
  • Issue #184: ObservableBuffer.Change has no generic type parameters, while the majority of its children do.
  • Issue #217: NPE when calling Node#snapshot
  • Issue #219: WritableImage#pixelWrit should be pixelWriter.
  • Issue #220: Scene’s onMouseDrag* setters have incorrect type parameters, jfxsi.MouseEvent instead jfxsi.MouseDragEvent.
  • Issue #221: Some type constraints in methods using jfxe.EventHandler arguments have incorrect variance.
  • Issue #222: Some setter are defined with _(...) instead of _=(...).
  • Issue #233: Problem with StringProperty.concat.
  • Issue #236: Importing scalafx.Includes._ breaks cellFactory creation.

To use ScalaFX add following to your SBT:

  libraryDependencies += "org.scalafx" %% "scalafx" % "8.0.60-R10"

For downloads visit ScalaFX on Sonatype or ScalaFX Releases on GitHub. Please report any problems using ScalaFX Issue Tracker. Please use ScalaFX Users Group to post questions.

ScalaFX 8.0.40-R8 Released

ScalaFX 8.0.60-R9 was tested against JavaFX 8.0u60. This is primarily compatibility upgrade (for new JavaFX 8.0u60 API) and bug-fix release.

Compatibility braking changes:

  • Issue #208: Support changes in Java 8 u60 API - ChoiceBox, MenuButton, …

New features and improvements:

  • Issue #188: Add helper methods for adding buttons.
  • Issue #192: Add wrappers for Dragboard methods added in JavaFX 8.

Bug fixes:

  • Issue #189: TableView.columnResizePolicy does not accept CONSTRAINED_RESIZE_POLICY.
  • Issue #190: Convenience methods for Clipboard assignment don’t work. See examples of usage in new ScalaDoc.
  • Issue #193: Method Clipboard.Files should start with lower case f.
  • Issue #197: MultipleSelectionModel.selected* methods should return ScalaFX ObservableBuffer.
  • Issue #199: TableColumn should allow assignment of predefined cell factories.
  • Issue #205: Calling scalafx.scene.Node.localToParentTransform / localToSceneTransform results in StackOverflow exception.
  • Issue #214: Infinite recursion in scalafx.scene.Node#snapshot(callback, params, image).
  • Issue #215: Incorrect assignment in scalafx.stage.PopupWindow#consumeAutoHidingEvents.

To use ScalaFX add following to your SBT:

libraryDependencies += "org.scalafx" %% "scalafx" % "8.0.60-R9"

For downloads visit ScalaFX on Sonatype or ScalaFX Releases on GitHub.
Please report any problems using ScalaFX Issue Tracker. Please use ScalaFX Users Group to post questions.

ScalaFX 8.0.40-R8 Released

ScalaFX 8.0.40-R8 was tested against JavaFX 8.0.40. This release adds wrappers for new features in JavaFX 8u40.

  • Compatibility braking changes:
    • Issue #163: content property naming conflict with JavaFX 8u40. Usage of content property in ScalaFX where it was referring to children property in JavaFX was deprecated in v.8.0.31-R7, and is now removed in ScalaFX 8.0.40-R8. You need to use children to access childrenProperty in JavaFX, and content to access contentProperty.
    • To follow the same naming approach, use of content in Scene and SubScene was deprecated. You should use children instead.
  • New features (JavaFX 8u40):
    • Issue #162: Support Dialogs and Alerts. See examples in those this blog post
    • Issue #158: Add Spinner and SpinnerValueFactory classes. See examples in this blog post
    • Add TextFormatter and new properties in TextInputControl. See examples in those two blog posts.
    • Add new class VertexFormat.
    • Add wrappers for new properties in: LineChart, Node, Platform, ScrollPane, TriangleMesh.
    • Issue #160: Support new accessibility properties added to Node
    • Updated TreeItem constructors
  • Bug fixes:
    • Issue #180: Bindings.select* methods throw “property … doesn’t exists” exceptions.

For downloads visit ScalaFX on Sonatype or ScalaFX Releases on GitHub.

ScalaFX 8.0.31-R7 Released

ScalaFX 8.0.31-R7 was tested against JavaFX 8.0.31. Improvements and bug fixes are mostly merged from ScalaFX 2 branch (except Issue #159).

  • Compatibility braking changes:
    • Issue #163: content property naming conflict with JavaFX 8u40. Usage of content property in ScalaFX where it was referring to children property in JavaFX was deprecated and will be removed in ScalaFX 8u40.\
    • Issue #164: Scala 2.9 is no longer supported starting with this release.
  • New features:
    • Issue #159: Add VBox and HBox constructors added in JavaFX 8
    • Issue #161: Add missing traits in scalafx.event: EventDispatchChain, EventDispatcher, EventTarget
    • Issue #168: Added wrappers for FormatStringConverter
    • Issue #171: ScalaDocs are now generated with links to sources
    • Issue #172: ScalaDocs are now generated with hierarchy diagrams
    • Issue #173: Added wrappers for SeparatorMenuItem and CustomMenuItem (thanks to Roman Hargrave)
  • Bug fixes:
    • Issue #154: TableView’s selectedItem not empty after clearing the selection
    • Issue #167: ListCell should inherit from IndexedCell
    • Issue #169: Observable buffer ignores update changes
    • Issue #178: When FileChooser.showOpenMultipleDialog() is used and user cancelled selection an NPE is thrown.

For downloads visit ScalaFX on Sonatype or ScalaFX Releases on GitHub.

ScalaFX 2.2.76-R11 Released

ScalaFX 2.2.76-R11 was tested against JavaFX 2.2.76.

  • Compatibility braking changes:
    • Issue #163: content property naming conflict with JavaFX 8u40. Usage of content property in ScalaFX where it was referring to children property in JavaFX was deprecated and will be removed in ScalaFX 8u40.
    • Issue #164: Scala 2.9 is no longer supported starting with this release.
  • New features:
    • Issue #161: Add missing traits in scalafx.event: EventDispatchChain, EventDispatcher, EventTarget
    • Issue #168: Added wrappers for FormatStringConverter
    • Issue #171: ScalaDocs are now generated with links to sources
    • Issue #172: ScalaDocs are now generated with hierarchy diagrams
    • Issue #173: Added wrappers for SeparatorMenuItem and CustomMenuItem (thanks to Roman Hargrave)
  • Bug fixes:
    • Issue #154: TableView’s selectedItem not empty after clearing the selection
    • Issue #167: ListCell should inherit from IndexedCell
    • Issue #169: Observable buffer ignores update changes
    • Issue #178: When FileChooser.showOpenMultipleDialog() is used and user cancelled selection an NPE is thrown.

For downloads visit ScalaFX on Sonatype or ScalaFX Releases on GitHub.

ScalaFX 8.0.20-R6 Released

Tested with JavaFX 8.0.20. Over 20 new wrappers, changes needed to support JavaFX 8.0 u20 (in some rare situations u20 may break existing code), bug fixes mostly merged from ScalaFX 2 branch:

  • Merge bug fixes and style improvements from ScalaFX 2.2.67-R10
  • Bug fixes:
    • There were some errors in test implementations.
    • Some wrappers were marked final.
  • New wrappers:
    • WebErrorEvent
    • SFXPanel, SwingFXUtils, SwingNode
    • StyleConverter, StyleOrigin, Stylable
    • WeakEventHandler
    • ResizeFeatureBase
    • TableFocusModel
    • ScrollToEvent
    • TablePositionBase. TableSelectionModel, TreeTableRow, SortEvent, TreeTableCell, TreeSortMode, TreeTablePosition
    • CheckBoxTreeTableCell, ChoiceBoxTreeTableCell, ComboBoxTreeTableCell and TextFieldTreeTableCell.
  • Add missing methods and constants in: HTMLEditor, WebEngine, WebView, PopupControl.
  • Issue #155: Upgrade JavaFX support to v.8.0_u20:
    • Remove methods from SwingFXUtils
    • Add new Stage property alwaysOnTop and userAgentStylesheet
    • Fixed test after some constructor convention changed.
    • PieChart.Data#node is now a property rather than a value accessor.
    • Add new methods: Node#contentBias()
    • Deprecate TreeView#nodeLevel, add add TreeView#treeItemLevel
    • Add KeyCombination#displayText
  • ScalaDoc improvements

Great thanks to all the contributors to this release: Rafael Afonso, Mike Allen, nigredo-tori, SwhGo_oN, Eric Zoerner, and Jarek Sacha.

For downloads visit ScalaFX on Sonatype.

ScalaFX 2.2.67-R10 Released

Tested with JavaFX 2.2.67. Mostly bug fixes and API style improvements:

  • Partially resolved issue #75 – Use Scala naming convention for constants.
  • Bug fixes
    • Issue #144: Add type parameter to default constructor argument in scalafx.scene.control.TableRow constructor
    • Issue #145: Fix assignment of TableView’s columnResizePolicy and rowFactory
    • Issue #147: LongProperty should be initialized with a Long value (instead of Int).
    • Issue #150: apply() methods in RadialGradient companion object should have return type RadialGradient, not Unit.
    • Issue #153: Implicit conversions SFX to/from JFX should allow null arguments

Great thanks to all the contributors to this release: Rafael Afonso, Mike Allen, nigredo-tori, SwhGo_oN, Eric Zoerner, and Jarek Sacha.

For downloads visit ScalaFX on Sonatype.

ScalaFX 2.2.60-R9 and 8.0.5-R5 Released

This the first set of releases after move of the ScalaFX project to GitHub. Here are changes common to all releases:

  • Refactored Color name constants to conform to Scala conventions. Now we have, for instance, Color.Blue instead of Java-like Color.BLUE. The old constants are deprecated and will be removed in a feature release.
  • Fixed issue 124. JFXApp now buffers all subclass construction/initialization code and executes it during application startup. (Previously, JFXApp didn’t fully implement the semantics of the scala.DelayedInit trait: it only buffered the construction code of the leaf sub-class (typically, the user’s application object).
  • Resolved Issue 126: Platform.runLater accepts closures with any return types.
  • Resolved Issue 125: Eliminate need for setting JAVA_HOME. It was used to point to location of JavaFX binaries. The binaries are now automatically located in the running JVM.
  • Upgrade to latest version of Scala (2.10.4 and 2.11.1).
  • Adjustments to the Duration class so that javafx.util.Duration instances are consistently wrapped within scalafx.util.Duration instances.
  • Added an auxiliary constructor to the Duration class.
  • Update to the KeyFrame.time method to wrap the retrieved javafx.util.Duration object with scalafx.util.Duration.
  • Added missing constructors to the EventType class.
  • Moved scalafx-hello-world sub-project to separate repo.

v.2.2.60-R9

ScalaFX 1.0.0 version changed to follow JavaFX it supports (last tested), currently 2.2.60. All changes mentioned above. Binaries are released for Scala 2.9.3, 2.10, and 2.11.

v.8.0.5-R5

Tested with Java 1.8.0 u5 (JavaFX 8.0.5). Binaries are released for Scala 2.10, and 2.11. All changes mentioned above plus:

  • Adjusted all Scaladoc entries so that they now link to JavaFX 8 API pages.
  • Added new ScalaFX wrappers for the JavaFX classes SkinBase and PseudoClass.
  • Made the ButtonBase class abstract (as the wrapped JavaFX ButtonBase class is itself abstract).
  • Added ScalaFX wrappers for JFX8 classes DateCell and DatePicker.
  • Added missing methods to the Track class. Deprecated the language method in AudioTrack.
  • Added wrapper for SubtitleTrack.
  • Added wrappers for classes in javafx.print package.

For downloads visit ScalaFX on Sonatype.

ScalaFX 1.0.0-R8 and 8.0.0-R4 Released

User visible

  • Version naming convention change to use R (release) instead of M (Milestone), to signify that releases are stable.
  • More fixes for use of code blocks in event handlers (similar to Issue 102 )
  • Fixed Issue 115 : EventHandlerDelegate#filterEvent should allow to remove created filters.
  • Resolved Issue 118 : Add scaladoc root page.
  • Resolved Issue 117 : Remove obsolete build files and documentation.
  • Resolved Issue 120 : Scene is missing two constructors.
  • Some code changes to support Scala 2.11 stricter compiler.

Contributor visible

  • Resolve Issue 116 - move settings from project/build.scala to build.sbt
  • Remove “sbt-idea” plugin since IDEA can now import SBT projects directly.
  • SBT is ScalaFX official build system, drop outdated Gradle and Maven files. It is difficult to maintain multiple build system support.
  • Fixed Issue 121 : Build script has some not needed resolvers.
  • Update ScalaTest? to v.2.1 - mostly to support testing in Scala 2.11

v.1.0.0.R8

Tested with Java 1.7.0 u51. All changes mentioned above. Binaries are released for Scala 2.9.3, 2.10, and 2.11.0-RC1.

v.8.0.0.R4

Tested with early release Java 1.8.0 b129 (final release preview of Java 8). All changes mentioned above plus:

  • Improvements to TriangleMeshDemo
  • DrawMode, CullFace are now using Scala naming convention for constants.
  • Resolved Issue 92 : SFX-8: Add wrapper for TextFlow and added TextFlowDemo.
  • Resolved Issue 99 : add wrappers for new classes in javafx.scene.layout: Background, BackgroundFill, BackgroundImage, BackgroundPosition, BackgroundRepeat, BackgroundSize, CornerRadii, BorderImage, BorderRepeat, BorderStroke, BorderStrokeStyle, BorderWidths.

Binaries are released for Scala 2.10. Scala 2.11.0-RC1 cannot compile current ScalaFX SFX-8 code yet.

For downloads visit ScalaFX on Sonatype.