Metawidget : un framework graphique qui promet

Publié le par Lanto Randria

En butinant un peu sur le net, j'ai découvert une annonce sur la sortie de la version 0.6 d'un framework graphique nommé Metawidget.
Alors, Metawidget, késako ?
  • comme je l'avais dit plus haut, il s'agit d'un framework graphique. Il permet donc de créer des IHM avec du code Java
  • quelles différences avec ce qui existe déjà, genre Struts, Spring MVC, Swing, JSF et tout le bazar ?
    • Metawidget fonctionne un peu différemment, pour moi, c'est le "bean thinking"+"no graphical component coding" : vous développez vos beans Java comme vous le souhaitez, sans vous soucier de la création des composants graphiques associés
    • Mieux encore, Metawidget est multi-support : on peut créer des IHM Swing aussi bien que des pages HTML avec, rien qu'en jouant avec des fichiers de configuration
    • Dans un pattern MVC, il se situe dans la partie V (view)
    la prise en main est très simple : en moins de 5mn, j'ai réussi à créer un IHM Swing (et Dieu sait que je suis nul en Swing) qui me permet de saisir les informations sur une personne, tout ceci sans avoir eu à fouiller dans les API Swing
Je résume un peu les étapes :
  • j'ai créé un POJO tout ce qu'il y a de plus classique
public class Eleve {
    private String nom;
    private String prenom;
    private Date dateDeNaissance;
    private boolean paresseux;
    private int note;
  
   ............... + tous les getter possibles
}
  • j'ai piqué le code du tutorial pour avoir le manager et l'introspecteur de Metawidget
public class EleveUI {
    public static void main(String[] args) {
        Eleve eleve = new Eleve();
        
        SwingMetawidget metawidget = new SwingMetawidget();
        metawidget.setInspector( new PropertyTypeInspector() );
        metawidget.setToInspect( eleve );
   
        JFrame frame = new JFrame( "Metawidget Tutorial" );
        frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
        frame.getContentPane().add( metawidget );
        frame.setSize( 400, 220 );
        frame.setVisible( true );
    }
}

  • Rien qu'avec ça, j'ai eu ce résultat

Notez que :
  • il s'est débrouillé tout seul pour rajouter les attributs de ma classe les uns en dessous des autres
  • il s'est adapté tout seul au type
  • il a trié par ordre alphabétique mes attributs (j'aurais aimé un tri suivant l'ordre d'apparition dans le fichier source mais bon...)
  • mieux encore : sans que je fasse quoi que ce soit, il m'a mis comme libellé "Date de naissance" pour l'attribut "dateDeNaissance"
  • il faut que l'attribut soit lisible, donc soit en visibilité "public" soit avec un getter public
Ce premier test se revèle déjà concluant, en montrant les capacités de Metawidget, avec une prise en main très facile.
Le tutorial nous permet d'aller plus loin :
  • je peux donner moi-même l'ordre d'apparition des champs, en mettant des annotations dans le fichier source. Par exemple, si je veux que la date de naissance apparaisse après le prénom, je mets :
@UiComesAfter("prenom")
private Date dateDeNaissance
  • je peux aussi externaliser cette gestion dans des fichiers de configuration XML, ce qui est à la mode en ce moment, et permet aussi de la souplesse, car honnêtement, aller dans le fichier source pour ordonner les champs, ce n'est pas ce qu'il y a de mieux, c'est même une hérésie pour moi
Là, je n'ai fait que du Swing, mais il parait qu'avec le même bean, en changeant juste d'introspecteur, je peux générer du JSF voire du GWT... pas mal non ?
Bref, ce framework promet pas mal de choses, espérons que son avenir en sera autant, je vais essayer de le suivre de près.
Il est accessible ici

Publié dans Veille

Commenter cet article