sapphire-javafx


License

License

Categories

Categories

JavaFX User Interface
GroupId

GroupId

com.sfxcode.sapphire
ArtifactId

ArtifactId

sapphire-javafx_2.12
Last Version

Last Version

1.1.2
Release Date

Release Date

Type

Type

jar
Description

Description

sapphire-javafx
sapphire-javafx
Project URL

Project URL

https://github.com/sfxcode/sapphire-javafx
Project Organization

Project Organization

com.sfxcode.sapphire
Source Code Management

Source Code Management

https://github.com/sfxcode/sapphire-javafx

Download sapphire-javafx_2.12

How to add to project

<!-- https://jarcasting.com/artifacts/com.sfxcode.sapphire/sapphire-javafx_2.12/ -->
<dependency>
    <groupId>com.sfxcode.sapphire</groupId>
    <artifactId>sapphire-javafx_2.12</artifactId>
    <version>1.1.2</version>
</dependency>
// https://jarcasting.com/artifacts/com.sfxcode.sapphire/sapphire-javafx_2.12/
implementation 'com.sfxcode.sapphire:sapphire-javafx_2.12:1.1.2'
// https://jarcasting.com/artifacts/com.sfxcode.sapphire/sapphire-javafx_2.12/
implementation ("com.sfxcode.sapphire:sapphire-javafx_2.12:1.1.2")
'com.sfxcode.sapphire:sapphire-javafx_2.12:jar:1.1.2'
<dependency org="com.sfxcode.sapphire" name="sapphire-javafx_2.12" rev="1.1.2">
  <artifact name="sapphire-javafx_2.12" type="jar" />
</dependency>
@Grapes(
@Grab(group='com.sfxcode.sapphire', module='sapphire-javafx_2.12', version='1.1.2')
)
libraryDependencies += "com.sfxcode.sapphire" % "sapphire-javafx_2.12" % "1.1.2"
[com.sfxcode.sapphire/sapphire-javafx_2.12 "1.1.2"]

Dependencies

compile (5)

Group / Artifact Type Version
org.scala-lang : scala-library jar 2.12.12
com.sfxcode.sapphire : sapphire-data_2.12 jar 1.1.0
org.controlsfx : controlsfx jar 11.1.0
org.kordamp.ikonli : ikonli-javafx jar 12.2.0
org.kordamp.ikonli : ikonli-fontawesome-pack jar 12.2.0

provided (3)

Group / Artifact Type Version
com.typesafe.akka : akka-actor_2.12 jar 2.6.13
com.jfoenix : jfoenix jar 9.0.10
org.fxmisc.richtext : richtextfx jar 0.10.6

test (3)

Group / Artifact Type Version
org.specs2 : specs2-core_2.12 jar 4.10.6
org.json4s : json4s-native_2.12 jar 3.6.11
ch.qos.logback : logback-classic jar 1.2.3

Project Modules

There are no modules declared in this project.

Sapphire JavaFX (SFX)

A JavaFX Application Framework for Scala User.

This project replaces sapphire-core and sapphire-extension.

It provides a solid base for Rapid Application Development with JavaFX and Scala and is a good place for start development.

Examples of using ScalaFX and JFoenix are provided.

Also there is an example of using it with a CDI Framework (Deltaspike).

If you like to try an easy way to setup a desktop app with scala, give it a try.

History

I started JavaFX GUI develpment with the project sapphire-core, because for every application almost the same pattern were needed.

As my projects need better datalist support and more stuff, i created another project named sapphire-extension and called it experimental.

With the time i wanted to have all code, demos and showcase to be at one place. This was the start of sapphire-javafx.

All data-handling was refactored out in another project called sapphire-data, because this date and expression handling is also useful in non JavaFX projects.

This project replaces sapphire-core and sapphire-extension.

At this time i decided to add a clear namespace prefix: SFX (for Sapphire JavaFX).

Documentation

Documentation under https://sfxcode.github.io/sapphire-javafx

Showcase

A showcase can be found in the showcase folder inside this project.

The showcase show some of the common pattern used by this project.

Migrate from sapphire-core

Migration from sapphire-core (and sapphire-extension) by replace:

sapphire.core (sapphire.extension)

with

sapphire.javafx

This should make all problems in packages work again.

CI

Scala CI

Download

Download

Giter8 Template

Giter8 template: sapphire-sbt.

Cross Build

Build and tested against Scala 2.12/2.13 and JDK 11/12

Usage

g8 https://github.com/sfxcode/sapphire-sbt.g8

Licence

Apache 2 License.

Demos

Tutorial

Simple JavaFX application with controller composition, controller exchange, ...

sbt run-tutorial

Login

JavaFX Login demo enhanced by sapphire-core

sbt run-login

Issues

spphire-core with ScalaFX and CDI (Deltaspike).

sbt run-issues

Multiple Windows

usage of multiple window controller

Showcase

Showcase Demo as visual reference for sapphire-core key concepts.

JFoenix Demo

JFoenix Demo

Technology Stack

Java JDK 11/12

Sapphire runs agains the latest JDK 11/12 version.

JavaFX

Java UI Application Framework as replacement for Swing.

Sapphire depends on OpenJFX 12

https://openjfx.io

Optional Dependency Injection (Issues Demo)

Sapphire use Apache Deltaspike as CDI Abstraction Layer (1.9.x).

http://deltaspike.apache.org

The default implementation depends on Apache OpenWebBeans (2.0.x).

http://openwebbeans.apache.org

Expression Language

Expressions are resolved by EL 3 Tomcat Expression Language.

ScalaFX (optional dependency)

A DSL for JavaFX written in Scala.

ScalaFX Website

ScalaFX plays very nice on top of sapphire-core applications.

Features

sapphire-java makes rapid UI Development easy. Multiple pre-build pattern help to fulfill most data centric parts. Demo applications and showcase available as blueprints.

Application Environment

  • Application Controller
  • UI Controller loading
  • FXML Loading
  • Hot Reloding

Bean Enhancement

  • Every Java / Scala Bean can be used for FXBean
  • FXBean has additional support for java/scala Maps
  • FXBean resolves Expressions on bean
  • FXBean creates Properties needed for Binding on demand
  • FXBean has change management by default

Scala JavaFX Bean Binding

  • Bindings by form id
  • Binding with converter
  • Adapter Pattern (FXBean Adapter)

ViewController

  • ContentManager for component exchange
  • View Transitions
  • Controller Lifecycle
  • Node Locator
  • DataTable Controller (Filter Support)
  • Master/Detail Controller

FXML Support

  • Easy Connect FXML with ViewController
  • Different FXML path options
  • Expression Language Support
  • Custom Table Cell / Column Factories

UI Widgets

  • Searchable DataList
  • Dual DataList

maven

sapphire-javafx is deployed on bintray (jcenter) and maven central.

Supporters

JetBrains is supporting this open source project with:

Intellij IDEA

Versions

Version
1.1.2
1.1.1
1.0.5
1.0.4
1.0.2
1.0.1
1.0.0