
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();
		}
	}
}
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.