<page> <vbox xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" > <hbox> <textbox id="expression" flex="1" /> </hbox> </vbox> </page>
sera interprété en SWT pour donner la fenétre suivante :
<page> <vbox xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" > <hbox> <textbox id="expression" flex="1" /> </hbox> </vbox> </page>
package org.akrogen.tkui.samples.calc; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; 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.swt.SwtGuiBuilderImpl; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.FillLayout; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; public class SwtXULCalc { public static void main(String[] args) { try { // 1. Get Tkui Builder TkuiConfigurationFactory factory = TkuiConfigurationFactory .newInstance(); ITkuiConfiguration configuration = factory.getConfiguration(); // 2. Register SWT Builder into TK-UI configuration IGuiBuilder swtGuiBuilder = new SwtGuiBuilderImpl(); configuration.registerGuiBuilder(swtGuiBuilder); String guiId = swtGuiBuilder.getId(); // 3. Register Tk-UI XUL Loader ITkuiLoader xulLoader = XulLoader.getInstance(); configuration.registerTkuiLoader(xulLoader); // 4. Instanciate SWT Shell Display display = new Display(); Shell shell = new Shell(display, SWT.SHELL_TRIM); FillLayout layout = new FillLayout(); shell.setLayout(layout); // 5. Get Instance of XULDocumentImpl // guiId =swtGui ITkuiDocument xulDocument = xulLoader.newDocument(guiId, shell); // 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 SWT Shell shell.pack(); shell.open(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) display.sleep(); } } 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.