Ellipse Tutorial

L'API JWT (Javascript Widget Toolkit)



ATTENTION : Tutorial en cours d'écriture ! N'hésitez pas à nous signaler toute erreur ou suggestion.

Accès rapide :
   Les pseudo classes proposées par le fichier JwtUtility.js
   Les fonctions proposées par le fichier JwtUtility.js
   Le modèle objet JWT et ses principales pseudo classes

L'API JWT trouve sont inspiration au niveau de l'API Swing du Java SE 6.0(Java Standard Edition 6.0) . Effectivement l'API Swing(API permettant la mise en oeuvre d'interfaces graphiques en Java) propose de nombreux composants graphiques qui peuvent être assemblés les uns aux autres avec une très grande facilité et une très grande clarté au niveau du code. D'où l'idée suivante : pourquoi ne pourrait-on pas avoir un modèle équivalent au sein d'un navigateur et qui soit manipulable via Javascript. De nombreuses autres librairies Javascript en font de même. Notre petit "plus" résidant dans le fait que ces composants JWT peuvent de plus être manipulés coté serveur via la notion de composants Ellipse (mais ce dernier point ne sera pas appréhendé dans ce document).

Notez que la librairie JWT propose de nombreuses fonctionnalités. Ces fonctionnalités sont exploitées par les composants graphiques JWT. Mais pourquoi ne pourrait-on pas les utiliser sur les tags HTML classiques ? C'est pour cette raison que la librairie JWT est découpée en deux grandes parties. Tous d'abord, un ensemble de fonctions sont proposées dans le fichier corelib/services/web/javascript/jwt/JwtUtility.js : ces fonctions travaillent, la plupart du temps, sur des ids ou des éléments du DOM (des tags). Ensuite ces fonctions sont encapsulées dans un modèle objet proche de celui de l'API Swing : ce modèle objet propose de nombreux composants tels que le calendrier web, les barres de progression, ... Nous allons donc étudier plus en détail chacune de ces deux parties.

Les pseudo classes proposées par le fichier JwtUtility.js

Trois types de données, relativement de petites tailles, permettent de gérer le positionnement des éléments dans la page. Il s'agit des types Point, Dimension et Rectangle. Voici la liste des attributs et des méthodes exposés par ces trois types de données.

A titre d'exemple, voici un petit exemple vous montrant comment utiliser la classe Color. Notez le résultat produit par cet exemple : il est présenté sur la partie droite de l'exemple.

 1 
 2 
 3 
 4 
 5 
 6 
 7 
 8 
 9 
addEventHandler( window, "onload", function( event ) {
    var color = new Color( 0, 0, 255 );
    
    for( var i=0; i<8; i++ ) {
        var node = document.getElementById( "line" + i );
        node.style.background = color.toCssString();
        color = color.brighter();
    }
} );
Exemple d'utilisation de la classe Color
 
 
 
 
 
 
 
 

Notez aussi que la classe Color propose aussi de nombreuses couleurs prédéfinie dont voici la liste :

Color.BLACK (0, 0, 0)   Color.DARKER_BLUE (0, 0, 128)  
Color.DARK_GRAY (64, 64, 64)   Color.DARK_BLUE (0, 0, 192)  
Color.GRAY (128, 128, 128)   Color.BLUE (0, 0, 255)  
Color.LIGHT_GRAY (192, 192, 192)   Color.LIGHT_BLUE (128, 128, 255)  
Color.WHITE (255, 255, 255)   Color.LIGHTER_BLUE (192, 192, 255)  
Color.DARKER_GREEN (0, 128, 0)   Color.DARKER_YELLOW (128, 128, 0)  
Color.DARK_GREEN (0, 192, 0)   Color.DARK_YELLOW (192, 192, 0)  
Color.GREEN (0, 255, 0)   Color.YELLOW (255, 255, 0)  
Color.LIGHT_GREEN (128, 255, 128)   Color.LIGHT_YELLOW (255, 255, 128)  
Color.LIGHTER_GREEN (192, 255, 192)   Color.LIGHTER_YELLOW (255, 255, 192)  
Color.DARKER_PINK (128, 0, 128)   Color.DARKER_RED (128, 0, 0)  
Color.DARK_PINK (192, 0, 192)   Color.DARK_RED (192, 0, 0)  
Color.PINK (255, 0, 255)   Color.RED (255, 0, 0)  
Color.LIGHT_PINK (255, 128, 255)   Color.LIGHT_RED (255, 128, 128)  
Color.LIGHTER_PINK (255, 192, 255)   Color.LIGHTER_RED (255, 192, 192)  
Color.ORANGE (255, 200, 0)   Color.CYAN (0, 255, 255)  
Ex : alert( Color.RED.toString() );

Les fonctions proposées par le fichier JwtUtility.js

Voici une liste des principales fonctions proposées par le fichier JwtUtility.js.

Le modèle objet JWT et ses principales pseudo classes

L'environnement Java SE définie deux librairies de mise en oeuvre d'interfaces graphiques : l'AWT (Abstract Window Toolkit) et Swing. D'un certain point de vue, on peut voir la librairie JWT (Javascript Widget Toolkit) comme une simplification des modèles object de ces deux librairies appliquées au langage Javascript. Comme nous l'avons déjà vu, il n'existe pas à proprement parler, de concept de classes en Javascript. Néanmoins le concept de prototypes Javascript permet d'approcher le concept de classes. JWT propose donc un certain nombre de pseudo-classes (nous parlerons néanmoins de classes dans la suite de ce document) donc les noms et les membres ressembleront souvent à ceux proposés dans les librairies Java considérées. Notez aussi que nous allons utiliser une notation proche de celle de Java en terme de package : même si Javascript n'utilise pas de package à proprement parler, les fichiers de définition de classes de la librairie JWT sont classifiés en dossiers.

La classe corelib.services.web.javascript.jwt.Component représente le comportement commun à tout composant graphique de la librairie JWT. Cette classe expose notamment les méthodes getId, setId, getLocation, setLocation, getSize, setSize, getBounds, ... Notez aussi la présence de la méthode injectInDocument : elle permet d'injecter le composant JWT dans un noeud du document.

La classe corelib.services.web.javascript.jwt.Container permet de contenir d'autres composants JWT. De même qu'en Java, des stratégies de placement (des Layout) peuvent être utilisées pour positionner automatiquement les sous composants du document. Cette classe expose notamment la méthode add permettant d'ajouter des composants au conteneur.


ATTENTION : Ellipse Framework vous est proposé en version beta (d'évaluation) afin de vous permettre d'évaluer ce framework. Infini Software se dégage de toutes responsabilités relatives à l'utilisation de ce framework. De plus, Infini Software ne pourra nullement être tenu responsable de l'utilisation des informations présentes dans ces tutoriaux.

Dominique LIARD - © 2007..2010 SARL Infini Software - Tous droits réservés
Les autres marques et les noms de produits cités dans ces documents sont la propriété de leurs détenteurs respectifs.