Wenn Sie ein Rich-UI-Widget oder ein Widget eines externen Typs schreiben, können Sie die komplexe Eigenschaft
@VEWidget angeben. Der EGL-Editor verwendet die Details einer Eigenschaft '@VEWidget' im Arbeitsbereich, indem
er der Palette Einträge hinzufügt, wenn Sie die Palette aktualisieren. Sie aktualisieren die Palette, indem
Sie auf das Tool Palette aktualisieren auf der Entwurfsoberfläche klicken, wie dies
in “Tools auf der Entwurfsoberfläche verwenden” erläutert wird.
Die Eigenschaft
@VEWidget enthält die folgenden Felder:
- category (Typ STRING)
- Die Kategorie in der Palette, in der das Widget aufgeführt ist. Die Kategorien sind in alphabetischer
Reihenfolge aufgelistet.
Wenn die Kategorie nicht vorhanden ist, wird eine neue Kategorie mit dem von Ihnen angegebenen Namen erstellt.
Die Kategorie ist insbesondere nützlich, um Widgets mit gleichen Namen wie Rich-UI-Widgets für Schaltflächen und
Dojo-Widgets für Schaltflächen zu unterscheiden.
- description (Typ STRING)
- Die Beschreibung in der Palette, die angezeigt wird, wenn der Benutzer den Mauszeiger über den Widgeteintrag bewegt.
- displayName (Typ STRING).
- Der Name des Widgets in der Palette. Innerhalb einer Kategorie werden die Namen in alphabetischer
Reihenfolge aufgelistet.
Der Standardwert ist der Name entweder des externen Typs oder des Handlers vom Typ RUIWidget.
- template (Typ STRING)
- Der Abschnitt der Widgettypdeklaration, der auf den Widgetnamen folgt, ohne Semikolon. In unserem
Beispiel beinhaltet die Deklaration einen Wertefestlegungsblock ('Set-Values-Block'), wie dies erforderlich ist, um einen
Fehler zu vermeiden. Das folgende Beispiel zeigt eine Deklaration:
myH3 my.package.H3{ text="The Heading Text" };
Wenn der EGL-Systemcode den Widgettyp
angeben und nur, wenn erforderlich, eine Qualifikationsmerkmal (wie z. B.
my.package) mit einschließen soll,
beginnen Sie die 'template'-Zeichenfolge mit der Variablen
typeName.
Beispiel:
template = "${typeName}{}"
Das folgende Beispiel zeigt eine ähnliche
Deklaration, die von der Annahme ausgeht, dass sich der zuvor gezeigte Widgettyp im selben Paket wie der
Handler befindet, der die Deklaration empfängt:
myH3 H3{};
Ein weiteres Beispiel:
template = "${typeName}{ text=\"The Heading Text\" }"
Die zugehörige sieht wie
folgt aus:
myH3 H3{ text="The Heading Text" };
- smallIcon (Typ STRING)
- Der Pfad für die GIF-Datei, die das kleine Symbol enthält, das auf der Palette
angezeigt werden kann. Der Pfad ist relativ zum Projektverzeichnis.
Wenn das Projekt zum Beispiel 'com.egl' ist, befinden sich die zuvor aufgelisteten GIF-Dateien im Verzeichnis
'com.egl/icons'.
- largeIcon (Typ STRING)
- Der Pfad für die GIF-Datei, die das große Symbol enthält, das auf der Palette
angezeigt werden kann. Der Pfad ist relativ zum Projektverzeichnis.
Wenn das Projekt zum Beispiel 'com.egl' ist, befinden sich die zuvor aufgelisteten GIF-Dateien im Verzeichnis
'com.egl/icons'.
- container (Typ @VEContainer)
- Geben Sie das Feld container wie folgt an:
container{@VEContainer{}}
Das Vorhandensein des Felds
container hat die folgenden Auswirkungen:
- Während der Ausführung kann das Widget andere Widgets einschließen.
- Bei der Entwicklung kann der EGL-Entwickler andere Widgets per Drag-and-Drop in das Widget,
das definiert wird, einfügen.
- Das Widget muss ein Feld mit dem Namen children enthalten.
Das Feld mit dem Namen children muss den Typ 'Widget[]' haben und
Sie müssen die Eigenschaft @EGLProperty dieses Feld definieren,
wie dies später noch beschrieben wird.
Darüber hinaus ermöglicht
@VEWidget die Angabe der RUIWidget-Eigenschaften und
-Ereignisse (sowie von Eigenschaften und Ereignissen externer Typen), die in der Ansicht
Eigenschaften angezeigt werden sollen.
Zum Beispiel wird ein angezeigter Eintrag für
backgroundColor für einen beliebigen
Handler vom Typ RUIWidget bereitgestellt (oder sogar für ein Widget, das durch einen externen Typ
bereitgestellt wird), jedoch ist
backgroundColor möglicherweise nicht für das
Widget geeignet, das Sie definieren. Die folgenden Felder der Eigenschaft
@VEWidget
filtern die Eigenschaften und Ereignisse, die ansonsten standardmäßig angezeigt werden:
- eventFilter (STRING[])
- Eine Feldgruppe von Ereignisnamen (wie ["onClick", "OnScroll"]), die abhängig vom Wert
von eventFilterType in die Anzeige einzubeziehen oder von der Anzeige
auszuschließen sind.
- eventFilterType (Typ INT)
- Einer der folgenden Werte (entweder der ganzzahlige Wert oder die zugehörige Konstante):
- ruiLib.EXCLUDE_ALL schließt alle Ereignisse aus, die für RUIWidget (Typ egl.ui.rui.RUIWidget) und bei
externen Typen für Widget (Typ egl.ui.rui.Widget) definiert sind. In diesem Fall werden alle Werte für
eventFilter ignoriert.
- ruiLib.EXCLUDE_ALL_EXCEPT schließt alle Ereignisse aus, die für RUIWidget und Widget definiert sind,
mit Ausnahme der Ereignisse, die im Wert von eventFilter angegeben werden.
- ruiLib.INCLUDE_ALL schließt alle Ereignisse ein, die für RUIWidget und Widget definiert sind. In diesem
Fall werden Werte für eventFilter ignoriert.
- ruiLib.INCLUDE_ALL_EXCEPT schließt alle Ereignisse ein, die für RUIWidget und Widget definiert sind,
mit Ausnahme der Ereignisse, die im Wert von eventFilter angegeben werden.
- propertyFilter (STRING[])
- Eine Feldgruppe von Eigenschaftsnamen (wie ["font", "fontSize"]), die abhängig vom Wert
von propertyFilterType in die Anzeige einzubeziehen oder von der Anzeige
auszuschließen sind.
- propertyFilterType (Typ INT)
- Einer der folgenden Werte (entweder der ganzzahlige Wert oder die zugehörige Konstante):
- ruiLib.EXCLUDE_ALL schließt alle Eigenschaften aus, die für RUIWidget (Typ egl.ui.rui.RUIWidget) und bei
externen Typen für Widget (Typ egl.ui.rui.Widget) definiert sind. In diesem Fall werden alle Werte für
propertyFilter ignoriert.
- ruiLib.EXCLUDE_ALL_EXCEPT schließt alle Eigenschaften aus, die für RUIWidget und Widget definiert sind,
mit Ausnahme der Eigenschaften, die im Wert von propertyFilter angegeben werden.
- ruiLib.INCLUDE_ALL schließt alle Eigenschaften ein, die für RUIWidget und Widget definiert sind. In
diesem Fall werden Werte für propertyFilter ignoriert.
- ruiLib.INCLUDE_ALL_EXCEPT schließt alle Eigenschaften ein, die für RUIWidget und Widget definiert sind,
mit Ausnahme der Eigenschaften, die im Wert von propertyFilter angegeben werden.
Das folgende Beispiel zeigt einen externen Typ, für den die einzigen Ereignistypen, die angezeigt werden,
onScroll und
onChange sind, und für den die einzigen
Eigenschaften, die angezeigt werden,
color und
backgroundColor sind:
ExternalType DojoButton extends DojoBase type JavaScriptObject {
relativePath = "dojo/widgets",
javaScriptName = "DojoButton",
includeFile = "dojo/widgets/dojobutton.html",
@VEWidget{
category = "Dojo",
template = "dojo.widgets.DojoButton { text = \"Button\" }",
displayName = "Button",
smallIcon = "icons/ctool16/dijit_button_pal16.gif",
largeIcon = "",
propertyFilterType = ruiLib.EXCLUDE_ALL_EXCEPT,
propertyFilter = ["color", "backgroundColor"],
eventFilterType = ruiLib.EXCLUDE_ALL_EXCEPT,
eventFilterType = ["onScroll", "onChange"]
}