{"id":15515840,"url":"https://github.com/sfxcode/sapphire-javafx","last_synced_at":"2025-06-11T13:11:51.165Z","repository":{"id":48460229,"uuid":"318272061","full_name":"sfxcode/sapphire-javafx","owner":"sfxcode","description":"JavaFX Framework for Scala users","archived":false,"fork":false,"pushed_at":"2023-01-29T17:55:01.000Z","size":2512,"stargazers_count":4,"open_issues_count":3,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-29T21:32:19.992Z","etag":null,"topics":["framework","gui","javafx","jfoenix-application","mvc-framework","rapid-development","scala","scalafx","ui"],"latest_commit_sha":null,"homepage":"https://sfxcode.github.io/sapphire-javafx/","language":"Scala","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sfxcode.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGES.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-12-03T17:37:22.000Z","updated_at":"2023-01-07T11:11:28.000Z","dependencies_parsed_at":"2023-02-16T00:15:56.537Z","dependency_job_id":null,"html_url":"https://github.com/sfxcode/sapphire-javafx","commit_stats":null,"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sfxcode%2Fsapphire-javafx","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sfxcode%2Fsapphire-javafx/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sfxcode%2Fsapphire-javafx/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sfxcode%2Fsapphire-javafx/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sfxcode","download_url":"https://codeload.github.com/sfxcode/sapphire-javafx/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250361397,"owners_count":21417883,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["framework","gui","javafx","jfoenix-application","mvc-framework","rapid-development","scala","scalafx","ui"],"created_at":"2024-10-02T10:04:33.552Z","updated_at":"2025-04-23T03:22:16.121Z","avatar_url":"https://github.com/sfxcode.png","language":"Scala","readme":"# Sapphire JavaFX (SFX)\n\nA JavaFX Application Framework for Scala User.\n\nThis project replaces [sapphire-core](https://github.com/sfxcode/sapphire-core) and [sapphire-extension](https://github.com/sfxcode/sapphire-extension).\n\nIt provides a solid base for Rapid Application Development with JavaFX and Scala and is a good place for start development.\n\nExamples of using [ScalaFX](http://www.scalafx.org/) and [JFoenix](http://www.jfoenix.com/) are provided.\n\nAlso there is an example of using it with a CDI Framework ([Deltaspike](https://deltaspike.apache.org/)).\n\nIf you like to try an easy way to setup a desktop app with scala, give it a try.\n\n## History\n\nI started JavaFX GUI develpment with the project sapphire-core, because for every application almost the same pattern were needed.\n\nAs my projects need better datalist support and more stuff, i created another project named sapphire-extension and called it experimental.\n\nWith the time i wanted to have all code, demos and showcase to be at one place. This was the start of sapphire-javafx.\n\nAll data-handling was refactored out in another project called sapphire-data, because this date and expression handling is also useful in non JavaFX projects.\n\nThis project replaces [sapphire-core](https://sfxcode.github.io/sapphire-core) and [sapphire-extension](https://sfxcode.github.io/sapphire-extension).\n\nAt this time i decided to add a clear namespace prefix: SFX (for Sapphire JavaFX).\n\n## Documentation\n\nDocumentation under [https://sfxcode.github.io/sapphire-javafx](https://sfxcode.github.io/sapphire-javafx)\n\n## Showcase\n\nA showcase can be found in the showcase folder inside this project.\n\nThe showcase show some of the common pattern used by this project.\n\n## Migrate from sapphire-core\n\nMigration from sapphire-core (and sapphire-extension) by replace:\n\n```\nsapphire.core (sapphire.extension)\n```\n\nwith\n\n```\nsapphire.javafx\n```\n\nThis should make all problems in packages work again.\n\n## CI\n\n![Scala CI](https://github.com/sfxcode/sapphire-javafx/workflows/Scala%20CI/badge.svg)\n\n## Download\n\n[ ![Download](https://api.bintray.com/packages/sfxcode/maven/sapphire-javafx/images/download.svg) ](https://bintray.com/sfxcode/maven/sapphire-javafx/_latestVersion)\n\n## Giter8 Template\n\n[Giter8 template](http://www.foundweekends.org/giter8/): [sapphire-sbt](https://github.com/sfxcode/sapphire-sbt.g8).\n\n## Cross Build\n\nBuild and tested against Scala 2.12/2.13 and JDK 11/12\n\n### Usage\n\ng8 https://github.com/sfxcode/sapphire-sbt.g8\n\n## Licence\n\nApache 2 License.\n\n\n## Demos\n\n### Tutorial\n\nSimple JavaFX application with controller composition, controller exchange, ...\n\n```\nsbt run-tutorial\n```\n\n### Login\n\nJavaFX Login demo enhanced by sapphire-core\n\n```\nsbt run-login\n```\n\n### Issues\n\nspphire-core with ScalaFX and CDI (Deltaspike).\n\n```\nsbt run-issues\n```\n\n### Multiple Windows\n\nusage of multiple window controller\n\n### Showcase\n\nShowcase Demo as visual reference for sapphire-core key concepts.\n\n### JFoenix Demo\n\n[JFoenix Demo](https://github.com/sfxcode/sapphire-jfoenix-demo)\n\n## Technology Stack\n\n### Java  JDK 11/12\n\nSapphire runs agains the latest JDK 11/12 version.\n\n### JavaFX\n\nJava UI Application Framework as replacement for Swing.\n\nSapphire depends on OpenJFX 12\n\n[https://openjfx.io](https://openjfx.io)\n\n### Optional Dependency Injection (Issues Demo)\n\nSapphire use Apache Deltaspike as CDI Abstraction Layer (1.9.x).\n\n[http://deltaspike.apache.org](http://deltaspike.apache.org)\n\nThe default implementation depends on Apache OpenWebBeans (2.0.x).\n\n[http://openwebbeans.apache.org](http://openwebbeans.apache.org)\n\n### Expression Language\n\nExpressions are resolved by EL 3 [Tomcat Expression Language](https://tomcat.apache.org/tomcat-8.0-doc/elapi/index.html).\n\n### ScalaFX (optional dependency)\n\nA DSL for JavaFX written in Scala.\n\n[ScalaFX Website](http://www.scalafx.org/)\n\nScalaFX plays very nice on top of sapphire-core applications.\n\n## Features\n\nsapphire-java makes rapid UI Development easy.\nMultiple pre-build pattern help to fulfill most data centric parts.\nDemo applications and showcase available as blueprints.\n\n### Application Environment\n\n- Application Controller\n- UI Controller loading\n- FXML Loading\n- [Hot Reloding](https://sfxcode.github.io/sapphire-core/development.html)\n\n### Bean Enhancement\n\n- Every Java / Scala Bean can be used for [FXBean](https://sfxcode.github.io/sapphire-core/detail/fxbean.html)\n- FXBean has additional support for java/scala Maps\n- FXBean resolves Expressions on bean\n- FXBean creates Properties needed for Binding on demand\n- FXBean has change management by default\n\n### Scala JavaFX Bean Binding\n\n- Bindings by form id\n- Binding with converter\n- Adapter Pattern (FXBean Adapter)\n\n### ViewController\n- ContentManager for component exchange\n- View Transitions\n- Controller Lifecycle\n- Node Locator\n- DataTable  Controller (Filter Support)\n- Master/Detail Controller\n\n### FXML Support\n\n- Easy Connect FXML with ViewController\n- Different FXML path options\n- Expression Language Support\n- Custom Table Cell / Column Factories\n\n### UI Widgets\n- Searchable DataList\n- Dual DataList\n\n## maven\n\nsapphire-javafx is deployed on  maven central.\n\n## Supporters\n\nJetBrains is supporting this open source project with:\n\n[![Intellij IDEA](http://www.jetbrains.com/img/logos/logo_intellij_idea.png)](http://www.jetbrains.com/idea/)\n\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsfxcode%2Fsapphire-javafx","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsfxcode%2Fsapphire-javafx","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsfxcode%2Fsapphire-javafx/lists"}