XUL et Swing

Cette section explique comment interpréter le fichier XUL calc.xul en Swing à l'aide de Tk-UI . Voici une copie d'écran Swing de ce que l'on obtiendra en fin de cette section :

Java

Créer la classe SwingXULCalc dans votre projet :
package org.akrogen.tkui.samples.calc;

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;

import javax.swing.JFrame;

import org.akrogen.tkui.core.ITkuiConfiguration;
import org.akrogen.tkui.core.TkuiConfigurationFactory;
import org.akrogen.tkui.core.dom.ITkuiDocument;
import org.akrogen.tkui.core.gui.IGuiBuilder;
import org.akrogen.tkui.core.loader.ITkuiLoader;
import org.akrogen.tkui.grammars.xul.loader.XulLoader;
import org.akrogen.tkui.gui.swing.SwingGuiBuilderImpl;

public class SwingXULCalc {

	public static void main(String[] args) {
		try {
			// 1. Get Tkui Builder
			TkuiConfigurationFactory factory = TkuiConfigurationFactory
					.newInstance();
			ITkuiConfiguration configuration = factory.getConfiguration();

			// 2. Register Swing Builder into TK-UI configuration
			IGuiBuilder swingGuiBuilder = new SwingGuiBuilderImpl();
			configuration.registerGuiBuilder(swingGuiBuilder);
			String guiId = swingGuiBuilder.getId();

			// 3. Register Tk-UI XUL Loader
			ITkuiLoader xulLoader = XulLoader.getInstance();
			configuration.registerTkuiLoader(xulLoader);

			// 4. Instanciate Swing JFrame
			JFrame frame = new JFrame("");

			// 5. Get Instance of XULDocumentImpl
			// guiId =swtGui
			ITkuiDocument xulDocument = xulLoader.newDocument(guiId, frame);

			// 6. Load XUL source stream into XUL DOM Document
			File f = new File("xul/calc.xul");
			InputStream sourceStream = new FileInputStream(f);
			xulLoader.load(sourceStream, xulDocument);

			// 7. Display Swing JFrame
			frame.pack();
			frame.setVisible(true);

		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}
Voici une explication de la classe :
  • Etape 1 : récupération d'une Configuration Tk-UI . La configuration Tk-UI contient toutes les informations pour rendre un fichier de description d'UI, comme :
    • les renderer disponibles comme SWT, Swing, SwingX, SWT Form...
    • les grammaires disponibles comme XUL, XHTML...
    • d'autres informations comme les URI Resolver (pour retrouver le chemin des ressources comme les images).

    Remarque : les étapes 1, 2 et 3 qui consistent à initialiser la configuration Tk-Ui peuvent étre effectuées qu'une seule fois. Une fois la configuration initalisée, il est possible de la stocker dans un singleton et l'utiliser dans votre application.

  • Etape 2 : enregistrement du renderer Swing à l'aide du Swing Builder fourni par défaut par Tk-UI.
  • Etape 3 : enregistrement de la grammaire XUL à l'aide du XUL loader fourni par défaut par Tk-UI.
  • Etape 4 : Création du conteneur Swing JFrame .
  • Etape 5 : récupération d'une instance d'un DOM Document XUL à l'aide du XUL Loader. Lors de cette initialisation, la JFrame Swing est passée au DOM Document ainsi que l'ID du GUI Builder (dans notre cas Swing) à utiliser pour rendre la description XUL.
  • Etape 6 : chargement du DOM Document XUL à l'aide du XUL Loader pour créer les élements Swing de la description du fichier XUL et les attacher ensuite à la JFrame Swing.
  • Etape 7 : affichage de la JFrame Swing .