ATTENTION : Tutorial en cours d'écriture ! N'hésitez pas à nous signaler toute erreur ou suggestion.
Accès rapide :
Utilisation sous forme de composants JWT
Utilisation sous forme de composants Ellipse
Il peut, dans certains cas (editeurs HTML, gestion de rendez-vous au sein d'un calendrier, ...) être utile de sélectionner une couleur. Pour ce faire,
on peut imaginer qu'on vous demande de saisir les trois valeurs des composantes RGB (Red, Green, Blue) de la couleur souhaitée : mais cette solution
n'est certainnement pas la plus ergonomique. Il serait préférable de présenter un nuancier (même très simpliste), afin de permettre une sélection de
couleur la plus simple possible. C'est très exactement ce que permet de faire le composant <web:ColorChooser>. Notez que ce
composant restera affiché en permanence à l'écran. Si vous souhaitez que le nuancier s'affiche à la demande, préférez alors le composant
<web:ColorPicker>.
Comme pour tous les autres composants graphiques Ellipse, le composant <web:ColorChooser> peut être utiliser de deux manières
différentes : soit sous forme de composants JWT
(et donc utilisable directement en Javascript, quelque soit la technologie serveur retenue pour le développement du projet considéré), soit sous forme
de composants Web Ellipse. Dans ce dernier cas, le composant aura bien entendu, une existance côté client (en Javascript), mais aussi côté serveur (en
Java). Reprenons ces deux possibilités une à une.
En préambule, je souhaitez indiquer/rappeler que la librairie JWT propose une classe Javascript de manipulation de couleur au format RGB : c'est la bien entendu la classe Color. Activez ce lien pour de plus amples informations.
Bien entendu, avant d'exploiter la librairie JWT, il est nécessaire de charger le coeur de cette librairie en mémoire (notamment, pour avoir accès à la
fonction importPackage). L'extrait de code suivant montre comment réaliser cette étape au sein d'une page
HTML
standard. Notez, bien entendu, que si vous utilisez une page Web Ellipse, cette
inclusion de script est réalisée automatiquement : il ne faut donc surtout pas la rejouer une seconde fois.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
<!DOCTYPE html> <html> <head> <title>JWT library is used in a simple HTML page</title> <meta content="IE=8" http-equiv="X-UA-Compatible"></meta> <!-- You can specify the root of the JWT library. By default this variable is set with this value. var __APPLICATION_PATH__ = "./"; --> <!-- Load JWT core library: should be loaded once --> <script language="Javascript" src="corelib/services/web/javascript/Core.js"> </script> <!-- Load the default JWT CSS styles --> <link rel="stylesheet" type="text/css" href="corelib/services/web/javascript/jwt/Jwt.css" /> </head> <body> <!-- Your page content --> </body> </html> |
Pour avoir accès au composant <web:ColorChooser>, il faut charger le fichier javascript suivant :
corelib/services/web/javascript/jwt/ColorChooser.js. Ce fichier ne doit pas être chargé avec le tag HTML
<script>, mais via la fonction Javascript importPackage. Les deux extraits de code suivants vous montre,
respectivement, une page HTML et son fichier de code Javascript associé.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
<!DOCTYPE html> <html> <head> <title>JWT Color Chooser samples</title> <meta content="IE=8" http-equiv="X-UA-Compatible"></meta> <script language="Javascript" src="corelib/services/web/javascript/Core.js"> </script> <script language="Javascript" src="ColorChooserSamples.js"> </script> <link rel="stylesheet" type="text/css" href="corelib/services/web/javascript/jwt/Jwt.css" /> </head> <body> <h1 style="text-align:center">JWT Color Chooser samples</h1> <br/> <table border="0" width="100%"> <tr> <td width="50%"> <p>Default color selected</p> <div id="forColorChooser1"></div> <p>Selected color : <input id="inputForColorChooser1" /></p> </td> <td> <p>With initial color selected</p> <div id="forColorChooser2"></div> <p>Selected color : <input id="inputForColorChooser2" /></p> </td> </tr> </table> </body> </html> |
Comme vous pouvez le voir, la page HTML définie un tableau HTML constitué de deux cellules côte à côte. Dans chacune de ces cellules, nous allons
chercher à y injecter un composant <web:ColorChooser>. Voici le code du fichier Javascript associé.
1 2 3 4 5 6 7 8 9 10 11 |
importPackage("corelib/services/web/javascript/jwt/ColorChooser.js"); addEventHandler(window, "onload", function (event) { var colorChooser1 = new ColorChooser(); colorChooser1.injectInDocument( document.getElementById( "forColorChooser1" ) ); var colorChooser2 = new ColorChooser(); colorChooser2.injectInDocument( document.getElementById( "forColorChooser2" ) ); }); |
A titre d'exemple voici l'affichage produit par deux composants <web:ColorChooser>.
|
Default color selected Selected color : |
With initial color selected Selected color : |
Comme vous pouvez le voir dans l'exemple ci-dessus, il est possible de spécifier une couleur initiale à votre composant de sélection de couleur.
Pour ce faire, passer la couleur souhaitée au constructeur de la classe ColorChooser (ex: new ColorChooser( Color.GREEN );).
Une autre possibilité permet de changer la couleurs sélectionner à un instant donné : pour se faire, il faudra utiliser la méthode
setSelectedColor( newColor ). Notez aussi que vous pouvez récupérer la couleur sélectionnée via la méthode getSelectedColor().
Le composant <web:ColorChooser> fournit aussi un événement permettant de réagir à la selection d'une nouvelle couleur.
Cet événement se nomme onColorSelected. Il déclenche soit si vous double-cliquez sur une couleur du nuancier, soit si vous activez le
bouton "ok", soit si vous appuyez sur la touche entrée lors de l'édition des composantes RGB de la couleur. Pour enregistrer votre gestionnaire
d'événements sur le composant, il vous faudra, bien entendu, utiliser la méthode addEventHandler. A titre de rappel, n'oubliez pas que cette
méthode du framework permet d'enregistrer plusieurs gestionnaires sur un même émetteur d'événements. Voici un exemple d'utilisation de ces concepts.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
importPackage("corelib/services/web/javascript/jwt/ColorChooser.js"); addEventHandler(window, "onload", function (event) { var colorChooser1 = new ColorChooser(); addEventHandler( colorChooser1, "onColorSelected", function() { var strColor = this.getSelectedColor().toHtmlString() document.getElementById("inputForColorChooser1").value = strColor; }); colorChooser1.injectInDocument( document.getElementById( "forColorChooser1" ) ); var colorChooser2 = new ColorChooser(); colorChooser2.setSelectedColor( Color.RED ); addEventHandler( colorChooser2, "onColorSelected", function() { var strColor = this.getSelectedColor().toCssString() document.getElementById("inputForColorChooser2").value = strColor; }); colorChooser2.injectInDocument( document.getElementById( "forColorChooser2" ) ); }); |
Si vous êtes désireux d'utiliser 100% des fonctionnalités du framework Ellipse, les choses deviennent encore plus simples : plus aucune ligne de code
Javascript n'est requises. Le simple fait d'utiliser le tag Ellipse <web:ColorChooser> suffira à afficher un composant dans
la page. Voici un premier exemple : notez que l'on peut choisir la couleur initialement affichée.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<?xml version="1.0" encoding="ISO-8859-1" ?> <web:Html xmlns:web="corelib.services.web.components" codeBehind="corelib.services.web.webapplications.WebPage"> <head> <title>ColorChooser Samples</title> <link rel="stylesheet" type="text/css" href="corelib/services/web/javascript/jwt/Jwt.css" /> </head> <body> <h1 align="center">ColorChooser Samples</h1> <br/> <h2>ColorChooser as Ellipse web component</h2> <web:ColorChooser id="chooser0" cssStyle="width: 200px; height: 160px;" /> <h2>ColorChooser as Ellipse web component with initial color</h2> <web:ColorChooser id="chooser1" value="#FF0000" cssStyle="width: 200px; height: 160px;" /> </body> </web:Html> |
Il est important de noter que le composant <web:ColorChooser> se comporte comme un élément de formulaire (d'ou l'attribut
XML value). En conséquence, si le tag est placé dans un formulaire web, la couleur sélectionnée est transportée jusqu'au serveur Web, sans
que vous n'ayez plus de chose à spécifier (si ce n'est le code de traitement côté serveur). A titre d'exemple, voici un exemple de formulaire web
contenant un composant de sélection de couleur.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
<?xml version="1.0" encoding="ISO-8859-1" ?> <web:Html xmlns:web="corelib.services.web.components" codeBehind="corelib.services.web.samples.virtualcaddy.webpages.samples.ColorChooserSamples"> <head> <title>ColorChooser Samples</title> <link rel="stylesheet" type="text/css" href="corelib/services/web/javascript/jwt/Jwt.css" /> </head> <body> <h1 align="center">ColorChooser Samples</h1> <br/> <h2>ColorChooser as Ellipse web component</h2> <web:ColorChooser id="chooser0" cssStyle="width: 200px; height: 160px;" /> <h2>ColorChooser as Ellipse web component with initial color</h2> <web:ColorChooser id="chooser1" value="#FF0000" cssStyle="width: 200px; height: 160px;" /> <h2>ColorChooser as Ellipse web component with autoPost</h2> <web:Form method="POST"> <web:ColorChooser id="chooser2" autoPost="true" cssStyle="width: 200px; height: 160px;" /> <br/> Selected color is : <web:TextBox id="txtColor" cssStyle="width: 240px" /> <br/> </web:Form> </body> </web:Html> |
Voici maintenant le code Java côté serveur. Notez la manière utilisée pour enregistrer l'écouteur sur le composant de sélection de couleur. Le code devrait vous convaincre de la simplicité d'utilisation. Pour information, ces deux derniers exemples de code sont disponible dans l'application de démonstration du Framework Ellipse.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
package corelib.services.web.samples.virtualcaddy.webpages.samples; import corelib.services.web.components.ColorChooser; import corelib.services.web.components.TextBox; import corelib.services.web.components.events.FormInputEvent; import corelib.services.web.components.events.FormInputListener; import corelib.services.web.webapplications.WebPage; import corelib.services.web.webapplications.events.WebPageEvent; public class ColorChooserSamples extends WebPage { private ColorChooser chooser2; private TextBox txtColor; @Override public void page_load( WebPageEvent webPageEvent ) { this.chooser2.addFormInputListener( new FormInputListener() { @Override public void valueChanged( FormInputEvent event ) { chooser2_valueChanged( event ); } }); } public void chooser2_valueChanged( FormInputEvent event ) { this.txtColor.setValue( this.chooser2.getSelectedColor().toString() ); } } |
|
|
|||||||