@VEWidget

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):
  1. 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.
  2. 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.
  3. 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.
  4. 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):
  1. 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.
  2. 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.
  3. 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.
  4. 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"]
    }

Feedback