Le blog d'Arcade Village

De l'applet vers l'application (Partie 2) : getParameter

23/05/2019
Dans le précédent article, nous avons vu à quoi ressemblait une applet et comment l'encapsuler dans une Frame pour en faire une application.
Les applet étaient exécutées dans des navigateurs et récupéraient des information du code HTML. Nous devons donc simuler cette capacité.
Pour récupérer les paramètres, l'objet Applet possède une fonction appelée getParameter.

Dans le cas de Hebi, le code HTML est le suivant :

<APPLET CODE="Hebi.class" MAYSCRIPT ARCHIVE="hebi.jar" WIDTH="308" HEIGHT="350">
<param name="il" value="1">
<param name="ig" value="1">
<param name="bg" value="ffce63">
<param name="ink" value="000000">

Les paramètres fournis sont :
- il : code du langage utilisé (ArcadeVillage "parle" Anglais, Français et Japonais)
- ig : un code pour le jeu
- bg : la couleur de fond
- ink : la couleur de l'encre.

Dans le premier article, nous avons vu dans le code d'Hebi les lignes suivantes :

String s = getParameter("bg");
if ( s != null )
{
try
{
c = new Color( Integer.parseInt(s,16) );
}
catch( Exception e )
{
}
}
s = getParameter("ink");
if ( s != null )
{
try
{
ink = new Color( Integer.parseInt(s,16) );
}
catch( Exception e )
{
}

Une application n'est pas liée à une page html, j'ai décidé d'utiliser la classe Properties qui offre la facilité de pouvoir être chargée à partir d'un fichier XML.
Le modèle du fichier XML est le suivant :

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
<entry key="url.documentbase">games/hebi/</entry>
<entry key="applet.width">310</entry>
<entry key="applet.height">360</entry>
<entry key="il">2</entry>
<entry key="ig">1</entry>
<entry key="fl">1</entry>
<entry key="bg">ffce63</entry>
<entry key="ink">000000</entry>
</properties>

Ce format est reconnu par la classe Properties que j'utilise pour récupérer les valeurs de paramètres.
Ma classe Applet contiendra donc le code

public class CCApplet extends Panel
{
private Properties params = new Properties();
..

public String getParameter( String key )
{
return params.getProperty(key);

}
public void setParameter( String key, String value )
{
params.setProperty(key,value);

}

public void loadParamsFromXML( String appfile )
{
InputStream f = null;
try
{
f = new FileInputStream(appfile);
// load a properties file
params.loadFromXML(f);
f.close();
}
catch (Exception ex)
{
ex.printStackTrace();
}
}

L'application devra contenir un appel à la fonction loadParamsFromXML en début de programme pour charger les paramètres.

Maintenant, les appels à la fonction getParameter rendent les même valeurs que si nous étions dans une applet appelée à partir d'une page HTML.
Les plus malins d'entre vous auront noté les lignes suivantes dans le fichier XML :

<entry key="url.documentbase">games/hebi/</entry>
<entry key="applet.width">310</entry>
<entry key="applet.height">360</entry>

J'utilise aussi ce fichier pour simuler la fonction getDocumentBase().
L'implémentation de celle-ci, ainsi que celle de getCodeBase(), seront expliquées dans le prochain article.

ArcadeVillage.com 1999 - 2024