Die spezifizierte Oberfläche kann mit dem Code Generator in Java verwandelt
werden.
(Als Alternative können die Oberflächen-Scripte auch zur
Laufzeit verwendet werden.)
<Text label="Name:" />
woraus dann die Mehtoden getName()
und setName() generiert werden, und die geerbte Methode aus GuiWindow so
überschrieben wird --> In den Klassen
GuiForm und
GuiDialog also
im Zweifelsfall javadoc prüfen.<Text label="Name:" name="namePerson"
/>
cmd=MyAction
können Menüs und Buttons
ein ActionCommand zugewiesen werden, welches beim Auslösen des Ereignisses
an den Observer übergeben wird. Diese dürfen auch doppelt sein,
wenn damit identische Ereignisse ausgelöst werden sollen, also wenn
zu einem Menüeintrag "Speichern" in der Toolbar auch ein Button vorhanden
ist, der der selben Aktion entspricht.<Item label="Speichern..." cmd="save" />
...
<Tool img="images/save.gif" cmd="save" />
Der Observer kann dann auf das Ereignis "save" gleichartig reagieren.
<Form label="Adresse" pack="myproject.adresse">
Components_java.def
kann
auch ein default-Package für Formulare und Dialoge usw. eingetragen
werden. Im Moment verweist dieses auf test
.
Wenn auch auf andere Benutzerereignisse reagiert werden soll, muß dieses in den Scripten gesondert spezifiziert werden.
Das zu generierende Script ist in den GuiBuilder zu laden, und das Menü "Tools / Generate Java" zu betätigen.
Der generierte Code wird in dem Verzeichnis abgelegt, in dem auch die Spezifikationsdatei liegt.
Hinweis:
Um ein ganzes Projekt mit vielen Scripten zu generieren, können die
Dateinamen der Spezifikation auch zeilenweise in eine Datei mit der Extension
".make
" eingetragen werden. Wird dann diese Datei in den GuiBuilder
geladen und der Code Generator aufgerufen, werden alle aufgeführten
Scripte generiert.
Sollte bei der Generierung ein Fehler auftreten, kann auch das Debug-Flag gesetzt werden. Diese verlangsamt die Generierung aber erheblich.
Der generierte Code ist in eine geeignete Entwicklungsumgebung zu laden und muß dort compiliert werden. Hierbei können u.U. weitere Fehler auftreten, und die Scripte müssen ggf. angepaßt werden (etwa wenn doppelte oder unzulässige Attribut-Namen vergeben wurden).
Zur Überprüfung ein kleines Programm schreiben, welches alle generierten Formulare und Dialoge anzeigt. Hier ist zu prüfen, ob des Ergebnis dem gewünschten auch entspricht.
Der Code Generator sorgt dafür, daß wenn jetzt Ereignisse in der Oberfläche ausgelöst werden, dieses im Consol-Fenster angezeigt wird. Hier ist also zu prüfen, ob der alle Ereignisse wie gewünscht definiert sind.
XXX TO DO
Ist der Einsatz des GuiBuilder eigenen Framewoks nicht gewünscht, kann auch Java-Code für den JBuilder generiert werden.
Da hier direkt die Swing-Klassen eingesetzt werden ist die Mächtigkeit des generierten Codes begrenzt und es muß entsprechend viel nachgearbeitet werden. Einige Elemente (Tree, Table) werden nur mit bescheidener Funktionalität generiert.
Der Codegenerator erzeugt je Schlüsselwort und Attribut entsprechenden Source-Code. Welcher Sourcecode generiert wird, ist in einer Steuerdatei für jede Klasse und für jedes Attribut eingetragen. Auf diese Art ist es im Prinzip möglich, auch andere Zielsprachen als Java zu generieren (C#, VB).
Erste Voraussetzung ist, daß eine Steuerdatei
Components_<language>.def
vorliegt. Im Verzeichnis GuiBuilder
befinden sich bereits Steuerdateien für
Java,
JBuilder und HTML.
In dieser Datei muß die File-Extension für den zu generierenden
Source-Code wie gewünscht angepaßt werden.
Siehe den Eintrag:
Extension=.java
Für jede zu generierenden Haupt-Container-Klasse muß gleichfalls
eine Steuerdatei <class>_<language>.def
vorliegen.
Beispiele sind hier Form_java.def,
Dialog_java.def
.
Damit der Code-Generator aus der Oberfläche auch aufgerufen werden kann,
ist das Oberflächen-Script für den GuiBuilder selbst entsprechend
anzupassen (siehe im Verzeichnis GuiBuilder.xml
).
Beispiel:
<Menu label="%Tools" >
<Item label="Generate %Java (GuiBuilder)" name="genJava" cmd="generate_Java"
/>
<Item label="Generate Java (J%Builder)" name="genJBuilder"
cmd="generate_JBuilder" />
<Item label="Generate %C#" name="genC" cmd="generate_CSharp"
/>
<Item label="-" />
Die Steuerdateien müssen dann Components_csharp.def, Form_csharp.def
usw. heißen.
Stand: 27.10.2001