lookupService YahooLocalService{@restbinding};
La proprietà @restbinding indica che i dettagli relativi all'accesso al servizio sono presenti nel codice e non del descrittore di distribuzione EGL. La decisione è utile ma non flessibile. Una modifica nella posizione del servizio richiede la modifica del codice sorgente. La Lezione 14 introduce il descrittore di distribuzione EGL, dove verranno aggiunti i dettagli di accesso al servizio nella maggior parte del lavoro di sviluppo.
function checkForEnter(event Event in)
if(event.ch == 13)
search();
end
end
Considerare il seguente dettaglio di background: il codice runtime EGL richiama la funzione checkForEnter e passa un oggetto eventi, una struttura di memoria che include dettagli relativi all'evento. In questo caso, l'evento che ha determinato il richiamo è onKeyDown e l'oggetto eventi include il carattere ASCII che rappresenta il tasto premuto dall'utente. In particolare, il numero 13 è il valore decimale per il ritorno a capo (il tasto INVIO) nella tabella ASCII, come indicato nella pagina: ASCII table and description (http://www.asciitable.com).
La funzione checkForEnter viene richiamata solo se l'utente preme il tasto di tabulazione o il tasto INVIO quando il campo di testo è attivo. A sua volta, la funzione richiama la funzione search solo se è stato premuto il tasto INVIO. La funzione search verrà creata successivamente.
function buttonClicked(event Event in) search(); end
La funzione buttonClicked e la relativa relazione con la proprietà onClick specifica del pulsante assicura che, quando l'utente fa clic sul pulsante Cerca, viene richiamata la funzione search.
function search()
localMap.zoom = 13;
// mostra un indicatore iniziale, se necessario per visualizzare la mappa
// (l'indicatore identifica solo il codice di avviamento postale)
localMap.addMarker(new MapMarker
{address = zipField.text, description = "zipcode: " + zipField.text});
// Richiamare il servizio Yahoo! remoto, passando il codice di avviamento postale
call lookupService.getSearchResults("YahooDemo", zipField.text)
returning to showResults onException displayError;
end
In questa visualizzazione iniziale per un codice di avviamento postale specifico, l'unico dettaglio fornito alla funzione localMap.addMarker() è il codice di avviamento postale stesso. Successivamente, viene impostata la proprietà address per fornire ulteriori dettagli, utilizzati per visualizzare un indicatore specifico dell'indirizzo.
function showResults(retResult ResultSet in)
linkListing HyperLink[0];
for(i INT from 1 to retResult.result.getSize() by 1)
newLink HyperLink{padding = 4, text = retResult.result[i].title, href = "#"};
newLink.setAttribute("address", retResult.result[i].Address + ", "
+ retResult.result[i].city + ", " + retResult.result[i].state);
newLink.setAttribute("title", retResult.result[i].Title);
newLink.onClick ::= mapAddress;
linkListing.appendElement(newLink);
end
listingBox.setChildren(linkListing);
end
newLink HyperLink{padding = 4, text = retResult.result[i].title, href = "#"};
Il collegamento ipertestuale causa il richiamo di codice invece di un indirizzo Web. Tuttavia, la presenza del segnaposto garantisce che il collegamento ipertestuale visualizzi il testo in modo classico, con la sottolineatura ed a colori, come se la selezione del collegamento ipertestuale determini l'apertura di un sito Web.
function mapAddress(e Event in)
// Visualizza l'indicatore quando l'utente fa clic sul collegamento
businessAddress STRING = e.widget.getAttribute("address") as STRING;
businessName STRING = e.widget.getAttribute("title") as STRING;
localMap.addMarker(new MapMarker {
address = businessAddress,
description = businessName} );
end
Quando l'utente fa clic sul collegamento ipertestuale al runtime, la funzione mapAddress richiama gli attributi impostati nella funzione showResults ed imposta un indicatore nella mappa visualizzata.
function displayError(ex AnyException in)
DojoDialogLib.showError("Yahoo Service",
"Cannot invoke Yahoo Local Service: "
+ ex.message, null);
end
DojoDialogLib è una parte Libreria nel progetto com.ibm.egl.rui.dojo.samples aggiunto al workspace nella Lezione 2. La funzione showError in tale libreria visualizza le informazioni in una finestra di dialogo. Il richiamo della funzione include una stringa denominata message, che si trova nel record dell'eccezione passato dal codice runtime EGL alla funzione displayError.
Poiché tale portlet funziona in modo indipendente, è possibile eseguirne il test separatamente.
10001Tale codice fa riferimento a Manhattan.

I problemi relativi al servizio di ricerca locale di Yahoo! possono essere notificati nella pagina “Local API – General Questions” all'indirizzo http://developer.yahoo.net/forum.
localMap.removeAllMarkers();
Nella lezione successiva, il nuovo gestore verrà integrato nell'applicazione.