DSL Kotlin pour webforJ
AperçuÉcrivez-le en Kotlin. Gardez votre Java.
Le Kotlin DSL permet de créer des interfaces webforJ avec une syntaxe concise et sûre du point de vue des types. Au lieu d’utiliser des appels impératifs, vous écrivez du code déclaratif qui décrit l’écran et qui se compile dans le même projet que votre code Java.
La classe que vous connaissez, en version builder
Buttondevientbutton()TextFielddevienttextField()FlexLayoutdevientflexLayout()Breakdevient`break`()
Les boutons, champs, mises en page, boîtes de dialogue, tiroirs, listes et éléments HTML en ont chacun un, nommé d’après la classe en camelCase.
Même écran, deux langues
Lisez le Java. Lisez ensuite le Kotlin.
Les deux côtés construisent les mêmes composants avec les mêmes classes webforJ. Côté Kotlin, les setters et les appels à add() disparaissent : les composants s’imbriquent et la configuration se fait dans des blocs.
JavaHelloView.java
@Route("/hello")
public class HelloView extends Composite<FlexLayout> {
private final FlexLayout self = getBoundComponent();
private TextField name = new TextField("What is your name?");
private Button greet = new Button("Say hello");
public HelloView() {
greet.setTheme(ButtonTheme.PRIMARY)
.addClickListener(e ->
Toast.show("Welcome, " + name.getValue() + "!",
Theme.SUCCESS));
self.add(name, greet);
}
}
KotlinHelloView.kt
@Route("hello")
class HelloView : Composite<FlexLayout>() {
private val self = boundComponent
init {
self.apply {
val name = textField("What is your name?")
button("Say hello") {
theme = ButtonTheme.PRIMARY
onClick {
Toast.show("Welcome, ${name.text}!", Theme.SUCCESS)
}
}
}
}
}
Ce que le DSL vous offre
Constructeurs, blocs et les lambdas
Chaque fonction de construction crée un composant, l’ajoute à son conteneur parent et exécute un bloc de configuration. Le reste du DSL en découle.
Blocs de configuration
Le bloc reçoit le composant sous forme de this ; vous pouvez donc définir ses propriétés et appeler directement ses méthodes.
textField("Email") {
placeholder = "you@example.com" // this.placeholder
required = true // this.required
onModify { validate() } // this.onModify(...)
}
Builders nommés d’après les composants
Chaque composant possède une fonction nommée d’après sa classe en camelCase. La plupart acceptent, avant le bloc, les options que vous définissez le plus souvent, comme un libellé ou un texte indicatif.
Blocs imbriqués
Les composants qui contiennent des éléments enfants acceptent des appels DSL imbriqués dans leur bloc, de sorte que le code reflète la structure de l’écran.
Événements sous forme de lambdas
Les écouteurs utilisent des méthodes préfixées par on qui acceptent une lambda, comme onClick et onModify.
Sécurité de la portée
Les enfants ne sont insérés que dans les composants qui les prennent en charge. Un ajout accidentel dans une portée externe ne compile pas.
Styles et noms de classes
La propriété styles permet d’accéder aux propriétés CSS avec des crochets, comme setStyle() en Java. Les noms de classe s’ajoutent avec +=.
À côté de votre code Java
Kotlin se compile en bytecode JVM. Utilisez des composants composites Kotlin depuis des classes Java et imbriquez des composants Java dans des blocs DSL avec add().
Étendre le DSL
Vos propres composants, en tant que constructeurs également
Les composants personnalisés et les bibliothèques tierces s’intègrent au DSL via une fonction d’extension sur HasComponents. L’utilitaire init ajoute le composant à son parent, exécute le bloc et le renvoie. Les composants composites créés avec le DSL obtiennent une fonction de la même manière.
fun @WebforjDsl HasComponents.starRating(
block: @WebforjDsl StarRating.() -> Unit = {}
): StarRating {
return init(StarRating(), block)
}
Comment démarrer
Ajouter Kotlin vers un projet Maven
Le DSL Kotlin est disponible à partir de webforJ 25.12. Un projet qui se compile déjà avec Maven nécessite une dépendance et un plugin.
- 1
Ajouter les dépendances
Ajoutez le module DSL Kotlin de webforJ et la bibliothèque standard Kotlin à votre pom.xml.
- 2
Ajouter le plugin Maven Kotlin
Compile vos sources Kotlin et Java en une seule fois. Aucune installation séparée de Kotlin n’est nécessaire.
- 3
Utilisez Kotlin aux côtés de Java.
Les fichiers Kotlin peuvent se trouver dans leur propre dossier source ou dans le même dossier que vos fichiers Java.
- 4
Écrire une vue et compiler
Créez une vue à l’aide des builders. Maven compile ensuite votre code Kotlin avec votre code Java.