Wenn Sie ein Rich-UI-Widget schreiben, das die Eigenschaft targetWidget verwendet (oder wenn Sie ein Widget mit einem externen Typ schreiben), können Sie Ereignistypen deklarieren, die ansonsten nicht definiert sind. Auf diese Weise können Sie dem Geschäftsentwickler die Möglichkeit geben, klarer über die Definition einer Abfolge von Tasks nachzudenken. Außerdem kann der Entwickler einen Ereignishandler in der Anzeige Ereignisse zuordnen.
Das nächste Beispiel zeigt die Verwendung einer angepassten Schaltfläche (MyButton), die die Eigenschaft @VEEvent verwendet. Wenn Sie das Beispiel in Ihrem Arbeitsbereich ausprobieren, beachten Sie, dass der EGL-Entwickler jetzt den EGL-Editor zu folgenden Zwecken verwenden kann: zum Erstellen einer Schaltfläche vom Typ 'MyButton' und zum Zuordnen von Ereignishandlern für die neu definierten Ereignisse (onPreClick und onPostClick).
package pkg;
import com.ibm.egl.rui.widgets.Button;
handler MyHandler type RUIhandler {initialUI = [ someButton ]}
someButton MyButton{text = "fresh",
onPreClick ::= respondToPreClick,
onClick ::= respondToClick,
onPostClick ::= respondToPostClick};
function respondToPreClick(e Event in)
sysLib.writeStdout("in pre");
end
function respondToClick(e Event in)
sysLib.writeStdout("in click");
end
function respondToPostClick(e Event in)
sysLib.writeStdout("in post");
end
end
package pkg;
import com.ibm.egl.rui.widgets.Button;
handler MyButton type RUIWidget {
targetWidget = internalButton,
@VEWidget{
category = "New EGL Widgets",
template = "pkg.myButton{ text=\"myButton\" }"}
}
text string {@EGLProperty{setMethod = setText,
getMethod = getText},
@VEProperty{}};
internalButton Button{onClick ::= respondToClick};
onPreClick EventHandler[] {@VEEvent{}};
onClick EventHandler[] {@VEEvent{}};
onPostClick EventHandler[] {@VEEvent{}};
private function setText(text String in)
internalButton.text = text;
end
private function getText() returns (String)
return ( internalButton.text );
end
private function respondToClick(e Event in)
preSize int = onPreClick.getSize();
clickSize int = onClick.getSize();
postSize int = onPostClick.getSize();
for (i int from 1 to preSize by 1)
OnPreClick[i](e);
end
for (i int from 1 to clickSize by 1)
OnClick[i](e);
end
for (i int from 1 to postSize by 1)
OnPostClick[i](e);
end
end
end
Änderungen an @VEEvent sind für eine Datei im EGL-Editor nur verfügbar, wenn Sie die Palette und die Datei aktualisieren. Zum Aktualisieren der Palette klicken Sie auf das Tool Palette aktualisieren auf der Entwurfsoberfläche, wie dies in “Tools auf der Entwurfsoberfläche verwenden” beschrieben wird. Zum Aktualisieren der Datei klicken Sie auf das Tool Webseite aktualisieren auf der Registerkarte 'Vorschau', wie in “Webanwendung im EGL-Editor ausführen” beschrieben.