Betrachten Sie, was geschieht, wenn Sie auf die IBM® Website (http://www.ibm.com ) und anschließend auf die IBM Rational Cafes-Website (http://www.ibm.com/rational/cafe) zugreifen. Zwei verschiedene Webseiten von fernen Servern werden bereitgestellt und Sie können in Ihrem Browser auf die Schaltflächen Zurück und Weiter klicken, um jede der beiden Sites erneut zu besuchen. Im Gegensatz dazu erfolgt die Hauptverarbeitung in einer Rich-UI-Anwendung nur in Ihrem Browser. Die Anwendung kann neuen Inhalt wiedergeben und sogar auf den Server für visuelle Aktualisierungen zugreifen, jedoch sind die Schaltflächen Zurück und Weiter zumeist inaktiviert oder leiten direkt zu anderen Websites weiter.
In Rich-UI entscheiden Sie, welche Anzeigeninhalte als separate Webseite anzusehen sind. Sie setzen diese Entscheidung um, indem Sie auf Funktionen im Protokoll ('History') zugreifen, wobei es sich um einen Rich-UI-Handlerabschnitt handelt, der mit dem Produkt bereitgestellt wird. Indem Sie mit dem Handlerabschnitt 'History' arbeiten, können Sie Seiten während der Laufzeit dem Browserprotokoll zuordnen und der Benutzer kann die Schaltflächen Zurück und Weiter verwenden, um auf verschiedene Seiten in der Anwendung zuzugreifen. Darüber hinaus können Sie auf den Versuch des Benutzers reagieren, den Browser zu schließen.
Der Mechanismus des Browserprotokolls speichert den Status einer Webseite nicht. Sie müssen das Verhalten codieren, das für Ihre Anwendung sinnvoll ist.
import com.ibm.egl.rui.history.History;
import com.ibm.egl.rui.history.HistoryChanged;
import com.ibm.egl.rui.history.OnBeforeUnloadMessageFunction;
Handler MyApplication Type RUIHandler { onConstructionFunction=start }
myHistory History {};
end
Durch die Deklaration einer Variablen auf der Basis von 'History' fügen Sie ein Feld #empty der Webadresse hinzu, die im Browser des Benutzers angezeigt wird. In Hinblick auf die nachfolgende Verarbeitung ist empty der Name der neuen Seite. Die neue Seite wird einem anwendungsspezifischen Browserprotokoll hinzugefügt, jedoch nicht dem browsereigenen Protokoll, das nur die ursprüngliche Webadresse behält.
myHistory.addListener(myHistoryChanged);
Delegate
HistoryChanged(newPageName String in)
end
Wie gezeigt, akzeptiert der Ereignishandler für das Ereignis "Neue Seite" eine Zeichenfolge. Wenn Sie die Funktion addListener aufrufen und eine angepasste Funktion angeben, wird die angepasste Funktion in den folgenden Fällen aufgerufen: Wenn der Browser die Anfangsseite mit dem Namen empty hinzufügt und wenn Sie eine nachfolgende Seite hinzufügen. In jeden Fall zeigt der Browser des Benutzers die Webadresse an und fügt den Seitennamen ein, der der Adressteil ist, der nach dem Nummernzeichen (#) angezeigt wird. Darüber hinaus übergibt die EGL-Laufzeit diesen Seitennamen an Ihre Funktion.
function myHistoryChanged(newPageName String in)
myLabel.text = "History was changed. Current page name is "+ newPageName;
end
Sie können mehrere Ereignishandler für das Ereignis "Neue Seite" registrieren, indem Sie addListener mehrere Male ausführen. Die referenzierten Funktionen werden in der Reihenfolge der Registrierung ausgeführt. Auch wenn Sie dieselbe Funktion mehrere Male registrieren, sind alle Registrierungen wirksam.
history.keepUserOnPage(stayHere);
Delegate
OnBeforeUnloadMessageFunction() returns(String)
end
Wie gezeigt, gibt der Ereignishandler für das Ereignis "Browser schließen" eine Zeichenfolge zurück. Diese Zeichenfolge wird in einem Dialogfenster angezeigt, das dem Benutzer die Möglichkeit gibt, das Schließen des Browsers zu bestätigen oder rückgängig zu machen.
function stayHere() returns(String)
return ("Close the application?");
end
myHistory.addToHistory("myNewPage");
Sie können in Ihrer Anwendung zur vorherigen Seite navigieren. Das folgende Beispiel zeigt einen entsprechenden Code:
myHistory.goBack();
Sie können in Ihrer Anwendung zur nächsten Seite navigieren. Das folgende Beispiel zeigt einen entsprechenden Code:
myHistory.goForward();