JFace DataBinding
TK-UI utilise
JFace DataBinding
pour synchroniser l'UI avec le DOM.
Cette section explique les grand principes de JFace Databinding. Une fois cette section terminée
vous pourrez voir des examples de DataBinding avec JFace :
Principe
Pour expliquer JFace DataBinding, prenons un example classqiue de Databinding : le binding
entre le champs name d'une instance d'une classe Person et la propriété Text d'un JTextField.
package org.akrogen.tkui.samples.xhtml.model;
public class Person {
private String name;
public Person(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
System.out.println("Person#setName(" + name + ")");
}
}
Voici le code de binding JFace :
// 1. Create Realm
SwingRealm.createDefault();
Realm realm = SwingObservables.getRealm();
// 2. Create DataBindingContext
DataBindingContext context = new DataBindingContext(realm);
// 3.1 Creates Observable to observe the Text property of JTextField
IObservableValue targetObservableValue = SwingObservables.observeText(
textField, SwingEventConstants.Modify);
// 3.2 Creates Observable to observe the name property of Person instance
IObservableValue modelObservableValue = BeansObservables.observeValue(
person, "name");
// 4. Binding
context.bindValue(targetObservableValue, modelObservableValue, null,
null);
Les étapes du binding JFace sont :
- Instancier un Realm
qui
permet entre autres de gérer le binding dans un environnement multi-thread.
- Instancier un DataBindingContext
à partir du Realm. Le DataBindingContext est un container pour les bindings à enregistré.
-
JFace DataBinding s'appuie sur la pattern Observable
,
autrement dit :
- une instance IObservableValue
permet d'observer la propriété Text du JTextField.
- une instance IObservableValue
permet d'observer la valeur du champs name de l'instance Person.
-
La méthode bindValue permet de binder les 2 instances IObservableValue.