paulk-asert commented on PR #2989: URL: https://github.com/apache/groovy/pull/2989#issuecomment-6402421018
Thanks Daniel, all six points addressed in 33fd7789a1: 1. **Distribution.** `optionalModule()` only keeps groovy-fx out of `groovy-all`. Like the other optional modules (ginq, contracts, toml, csv), the jar still goes into the binary distribution's `lib/` and is managed by the BOM. Shipping the jar brings in no JavaFX: the generated POM depends only on `groovy` plus the BOM import, and the Gradle module metadata has no `org.openjfx` entry in any variant. 2. **Classifiers.** Following on from 1: OpenJFX is `compileOnlyApi`, which isn't published, so consumers don't inherit a classifier-less stub or any OpenJFX coordinates. The guide's "A build tool" entry now says so. The consumer's build has to declare `javafx-base`, `javafx-graphics` and `javafx-controls` for its own platform, or the IDE won't resolve the JavaFX types. 3. **Toolkit lifecycle.** There's a new Troubleshooting section under Threading. It lists the two `IllegalStateException` messages `GroovyFX` can throw: the toolkit has already been shut down and cannot be restarted in this JVM (usually implicit exit after the last window closed), and the toolkit did not start within the timeout (no display; use Monocle or JavaFX 26+ headless, or raise `groovyfx.toolkit.timeout`). 4. **`@Bindable` + `@FXBindable`.** Good catch. The combination was order-dependent: one order failed with a misleading "setter is declared explicitly" error, and the other compiled with `@Bindable` wrapping the generated setter. It's now a compile error in every combination (both annotation orders on a property, and either annotation at class level with the other on a property). The message points to `javafx.beans.property.adapter`. For anyone who really needs both, the guide has an example (`fxbindable_adapter`) that exposes a `@Bindable` property as a JavaFX property with `JavaBeanStringPropertyBuilder`, plus a test showing changes flow both ways. 5. **Node list.** The guide now includes a generated node reference, built the same way as the SwingBuilder widget docs. It also takes on board the formatting feedback in apache/groovy-website#46: one table per registration group, in builder order, each class linked to its OpenJFX 21 javadoc page (module path derived from the jar), plus the `fx`/`fxLater` utility methods. Regenerate it with `./gradlew :groovy-fx:generateSceneGraphBuilderNodeDocs`. To share the generator plumbing I pulled the Swing task's mechanics into a small `BuilderDocTask` in build-logic; the Swing output is byte-identical. 6. **`--add-opens`.** None needed, and the testing section now says so explicitly. The module runs on JDK 17 through 25 without `--add-opens`/`--add-exports`. CI covers ubuntu 17/21/25 plus windows/mac 17. The tests that start the toolkit run on 21+ only, because Monocle 21 is a Java 21 class file. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
