GuiBuilder
Plugins
Sie haben einen total schicken Kalender/HTML-Editor gebaut, und möchen den jetzt im GuiBuilder einsetzen?
Dann wird es Zeit, ein Plugin zu erstellen!
Hierzu müssen folgende Voraussetzungen erfüllt sein:
Der GuiBuilder sucht nach Plugins im Unterverzeichnis "plugins";
dieses also ggf. anlegen.
Richten Sie im Verzeichnis "plugins" Ihr eigenes Verzeichnis ein, welches Ihr Plugin aufnehmen soll. Es ist eine gute Idee, diese mit einen Domain-Name zu versehen über den Sie selbst verfügen (com.myCompany.myPlugin).
Erstellen Sie mit einer geeigneten Entwicklungsumgebung ihr Plugin.
Die zu erstellende Klasse muß eine Gui-Komponente des Gui-Frameworks erweitern. Suchen Sie sich als Superklasse die Klasse aus dem GuiBuilder Framework aus, deren Funktion Ihrer Komponente am nächsten kommt; wenn Sie z.B. einen Kalender programmiert haben, dann erweitern Sie GuiDate.
Wenn Ihre Klasse bereits von einer anderen Klasse erbt (z.B. JComponent), dann progammieren Sie eine neue Plugin-Klasse, die per Delegation auf Ihren Kalender zugreift.
Hier der Code für ein Beispiel-Plugin, bei dem durch Eingabe von "h" in einem Datumsfeld soll das Datum auf "Heute" gesetzt wird.
import java.util.Date;
import de.guibuilder.framework.GuiDate;
public class Datum extends GuiDate {
/**
* Verwandelt "h" oder "H" in ein heutiges Datum.
*/
public void postProc() {
if (this.getText().equalsIgnoreCase("h")) {
Date d = new Date();
this.setValue(d);
}
}
}
Die Methode postProc() wird vom GuiBuilder Framework immer dann
aufgerufen, wenn der Anwender einen Wert eingegeben hat. Erst nachdem diese
Methode durchlaufen wurde wird ihr Inhalt - hier auf ein gültiges Datum
- validiert.
Erstellen Sie eine JAR-Datei mit Ihren Klassen und kopieren Sie dieses in Ihr Plugin-Verzeichnis.
Erstellen Sie eine Datei "plugin.xml" in Ihrem Verzeichnis.
Hier ein Beispiel, wie diese aufgebaut ist:
<?xml version="1.0" encoding="ISO-8859-1"?>
<plugin
name="Example GuiBuilder Plugin"
version="1.0"
provider-name="Example Inc."
<!-- In diesem Archiv sind die Klassen drin -->
library="example.jar">
<class
<!-- Das ist der Name der zu ladenden Klasse -->
name="de.guibuilder.test.ExampleText"
<!-- Diese Klasse aus dem GuiBuilder-Framework wird erweitert
-->
extends="GuiText"
<!-- Dieses Schlüsselwort wird dem GuiBuilder
hinzugefügt -->
keyword="Example1"
>
<!-- Diese Layout-Contraints werden vom GuiBuilder gesetzt
-->
<DefaultLayoutConstraints
width="3"
height="1"
weightx="3"
weighty="0"
anchor="NW"
fill="H"
Insets.bottom="0"
Insets.right="5"
Insets.left="0"
Insets.top="5"
/>
<!-- Das Schlüsselwort erhält zusätzlich
Attribute -->
<Attribute
<!-- Das ist das zusätzliche XML-Attribut
-->
name="selColor="
<!-- Diese Methode soll aufgerufen werden -->
method="setSelectionColor"
<!-- Das ist der Typ des Arguments, in das das Argument
konvertiert werden soll.
In diesem Beispiel kann die Farbe auch im Format
selColor="rrr,ggg,bbb" eingegben werden.-->
argumentType="Color"
/>
<Attribute
name="text="
method="setText"
argumentType="String"
/>
</class>
<class name="de.guibuilder.test.Datum"
extends="GuiDate"
keyword="Datum"
>
<DefaultLayoutConstraints
width="1"
height="1"
weightx="0"
weighty="0"
anchor="NW"
fill="N"
columns="7"
horizontalAlignment="L"
Insets.bottom="0"
Insets.right="5"
Insets.left="0"
Insets.top="5"
/>
</class>
</plugin>
<?xml version='1.0' encoding='ISO-8859-1'?>
<!DOCTYPE GDL SYSTEM 'gdl.dtd'>
<GDL>
<Form label='Plugin Test'>
<Datum label="Heute?:"/>
<Example1 label="Eingabe:" selColor="0,255,0"/>
</Form>
</GDL>
Erste Messungen scheinen zu belegen, daß die Performanz beim Aufbau eines Fensters nicht durch den Einsatz von Plugins leidet.
Es fehlt eine Konzept , wie die gdl.dtd um die zusätzlichen
Schlüsselworte ergänzt wird.
Z.Z. können leider nur die folgenden GuiBuilder-Klassen erweitert werden: