Je suis en train de travailler sur le moteur de Binding dans le projet Tk-UI.
Le Binding permettra de :

  1. binder une propriété d'une widget (ex : background) avec un évenement d'une widget (ex : quand on bouge la valeur d'un slider, on modifie le backround des widgets bindes sur le slider).
  2. binder une propriété d'une widget (ex : visible) avec la propriété (getter/setter) d'un JavaBean.
  3. binder une propriété d'une widget (ex : visible) avec la propriété (getter/setter) d'un objet Scriptable Rhino (Javascript).


Eclipse fournit un moteur de binding qui est indépendant de l'UI. JFace a implementé le moteur de binding pour gérer SWT.

Je suis en train d'implementer le binding pour Swing qui se retrouvera dans le projet UFace qui se veut une API indépendante de l'UI (Swing, SWT...).

Une fois le binding Swing implementé, une étude sera lancé pour créer une API d'expression de Binding (DBEL Data Binding Expression Language) qui permettra de décrire un binding à l'aide d'une String.

L'implémentation par défaut de DBEL sera sûrement celle de XAML car aujourd'hui je n'en connais pas d'autres.

Ce qui pourrait donner :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
<script>
function User() {
this.value = '';
}

var myUser = new User();
myUser.value = 'Initial value';

</script>
<textbox value="{Binding ElementName=myUser , Path=value}" />
Cette exemple binde la valeur de la textbox XUL avec la propriété value de l'objet Scriptable myUser.

A l'affichage de la textbox, celle ci aurra la valeur 'Initial value'. Lorsque la textbox sera changé, value de myUser prendra la valeur saisie dans la textbox.

N'hesitez pas à me solliciter si vous avez des questions.

Angelo