JavaScool:DocCreationProgletExemple

De Sciencinfolycee
Aller à : navigation, rechercher

Cette page a pour but d'expliquer comment créer une proglet concrètement. Elle présente une proglet d'exemple, affichant simplement un label, et permettant à l'utilisateur d'interagir avec ce dernier.

  • Le code est commenté et disponible dans une archive disponible ZIP.
  • Il peut être exécuter en lançant ce fichier JAR.

proglet.pml

Ce fichier est le coeur de la proglet : il définit la description de la proglet, le nom de son icône et les auteurs

{proglet
title="Exemple de proglet"
author="Guillaume Matheron "
icon="sample.png"
}

sample.png

Cette image est le logo de la proglet. Elle peut avoir n'importe quel nom mais celui-ci doit être mentionné dans le fichier proglet.pml

Note : il est quasi-indispensable que cette image soit au format png transparent. Sans cela il sera très difficile dee l'intégrer sur le site sans affecter son design

help.xml

Ce fichier définit l'aide à afficher à l'utilisateur. Le fichier est écrit en xml, vous pouvez trouver de l'aide quand à comment rédiger ce fichier dans les [?page=developers&action=doc-xml spécifications des fichiers d'aide]. Il est possible, de créer plusieurs fichiers d'aide, mais ils seront tous convertis au format htm lors de la compilation de la proglet. Pour lier les fichiers entre eux, vous devez donc y référer en tant que fichiers htm.

Note : le nom du fichier help.xml est fixé par les spécifications d'une proglet

Ce fichier est un fichier xml : il sera converti en htm et permet de créer une seconde page d'aide. Toutes les pages d'aide peuvent être liées les unes aux autres

Panel.java

C'est le fichier central de la proglet, en quelque sorte (ou au moins de son code Java). Il contient la description de la zone de Javascool réservée à la proglet (le 'panel') et le code à exécuter automatiquement au lancement de la proglet (initialiser des variables, créer des listeners, lancer des tâches de fond etc.)

La classe Panel doit hériter de la classe JApplet. On créera donc une autre class, ProgletPanel, qui contiendra tous les éléments graphiques de la proglet. On se contentera donc dans la classe Panel d'implémenter la méthode init() de la classe JApplet et d'instancier la class ProgletPanel.

Notes :

  • Le nom de la classe Proglet est fixé par les spécifications, mais celui de la classe ProgeltPanel ne l'est pas. En fait, cette classe peut très bien ne pas exister ou être définie comme classe privée dans la classe Panel.
  • La classe Panel doit hériter de la classe java.applet.Applet mais il est en général plus simple de la faire hériter de javax.swing.JApplet. Ceci est autorisé car javax.swing.JApplet hérite elle-même de java.applet.Applet.
  • On utilise ici la fonction Macros.readString(). Plus d'informations dans la [?page=developers&action=faq#fsfgs FAQ]
  • Consultez les [?page=developers&action=proglets spécifications d'une proglet]

Code source du fichier Panel.java

import javax.swing.JApplet;
import org.javascool.tools.Macros;

public class Panel extends JApplet {
	private static ProgletPanel panel=new ProgletPanel();
	
	/** Constructeur par défaut */
	public Panel() {
		// Affiche panel en tant que panel principal de cette applet
		setContentPane(panel);
	}
	
	/** Récupérer le ProgletPanel affiché */
	public static ProgletPanel getPanel() {
		return panel;
	}
	
	/** Juste pour montrer que cette méthode peut être implémentée */
	public void init() {
        // On demande un texte à l'utilisateur et on l'affiche en label
		panel.setText(Macros.readString());
	}
}

ProgletPanel.java

Ce fichier définit le panel qui sera affiché dans l'applet. La classe ProgletPanel doit donc étendre la classe java.awt.Panel.

Lors de sa construction elle crée un label et l'affiche en haut du panel. Elle définit aussi une méthode permettant de changer le texte du label, pour respecter l'encapsulation.

import java.awt.Panel;
import java.awt.Label;
import java.awt.BorderLayout;
import java.lang.String;

public class ProgletPanel extends Panel {
	/** Correspond au label affiché dans le panel de la proglet */
	private Label label;
	
	/** Construit un nouveau panel */
	public ProgletPanel() {
		// On crée un label
		label=new Label("");
		// Et on l'ajoute au panel
		add(label,BorderLayout.NORTH);
	}
	
	/** Change le texte affiché dans le label */
	public void setText(String text) {
		label.setText(text);
	}
}

Functions.java

Ce fichier définit les fonctions directement accessibles depuis Java's Cool, et qui permettent donc d'interagir avec la proglet

Dans cet exemple, nous définirons une méthode getText(String) qui permettra de changer le texte affiché dans le panel de la proglet. Toutes les méthodes de Fonctions doivent être statiques pour être accessibles depuis Java's Cool.

import java.lang.String;

public class Functions {
	/** Permet de changer le texte affiché sur le panel de la proglet */
	public static void setText(String text) {
		Panel.getPanel().setText(text);
	}
}