lookupService YahooLocalService{@restbinding};
La propriété @restbinding indique que les caractéristiques d'accès au service sont dans votre code plutôt que dans le descripteur de déploiement EGL. La décision est pratique mais sans souplesse. Une modification de l'emplacement du service nécessite la modification du code source. La leçon 14 présente le descripteur de déploiement EGL, dans lequel vous insérerez probablement les caractéristiques d'accès au service pour la plupart de vos développements.
function checkForEnter(event Event in)
if(event.ch == 13)
search();
end
end
Considérons les caractéristiques d'arrière-plan suivantes : le code d'exécution EGL appelle la fonction checkForEnter et transmet un objet événement, qui est une structure de mémoire comportant les caractéristiques de l'événement. Dans ce cas, l'événement à l'origine de l'appel est onKeyDown, et l'objet événement inclut le caractère ASCII qui représente la frappe de l'utilisateur. Plus précisément, le nombre 13 est la valeur décimale du retour chariot (la touche Entrée) dans la table ASCII, comme indiqué ici : ASCII table and description (http://www.asciitable.com).
La fonction checkForEnter est appelé uniquement si l'utilisateur appuie sur une touche comme touche Tabulation ou la touche Entrée lorsque la zone de texte dispose du focus. S'il s'agit de la touche Entrée, la fonction appelle à son tour la fonction search. Vous allez bientôt créer la fonction search.
function buttonClicked(event Event in) search(); end
La fonction buttonClicked et sa relation avec la propriété onClick du bouton garantit que l'utilisateur appelle bien la fonction search lorsqu'il clique sur le bouton Rechercher.
function search()
localMap.zoom = 13;
// affichage d'un marquer initial, indispensable pour afficher la carte
// (le marqueur identifie uniquement le code postal)
localMap.addMarker(new MapMarker
{address = zipField.text, description = "zipcode: " + zipField.text});
// Appel du service distant Yahoo!, transmission du code postal
call lookupService.getSearchResults("YahooDemo", zipField.text)
returning to showResults onException displayError;
end
Dans cet écran initial pour un code postal spécifique, la seule information à fournir à la fonction localMap.addMarker() est le code postal lui-même. Ensuite, vous définirez plus d'informations dans la propriété address, qui est utilisée pour afficher un marqueur spécifique à l'adresse.
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 = "#"};
L'hyperlien entraîne l'appel de code au lieu d'une adresse Web. Cependant, la présence de la réservation garantit que l'hyperlien affiche le texte d'une manière familière, avec un trait de soulignement et en couleur, comme si l'utilisateur ouvrait un site Web en cliquant sur l'hyperlien.
function mapAddress(e Event in)
// Affichage du marqueur lorsque l'utilisateur clique sur le lien
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
Lorsque l'utilisateur clique sur un lien hypertexte, la fonction mapAddress extrait les attributs qui ont été définis dans la fonction showResults et positionne un marqueur sur la carte.
function displayError(ex AnyException in)
DojoDialogLib.showError("Yahoo Service",
"Cannot invoke Yahoo Local Service: "
+ ex.message, null);
end
DojoDialogLib est un composant Bibliothèque du projet com.ibm.egl.rui.dojo.samples que vous avez ajouté à votre espace de travail à la leçon 2. La fonction showError fournie par cette bibliothèque affiche des informations dans une boîte de dialogue. L'appel de la fonction contient une chaîne nommée message, qui se trouve dans l'enregistrement de l'exception que le code d'exécution d'EGL transmet à la fonction displayError.
Ce portlet fonctionnant de manière indépendante, vous pouvez le tester séparément.
10001Ce code postal est celui du centre de Manhattan.

Les problèmes rencontrés avec Yahoo! Local Search Service peuvent être signalés ici : "Local API – General Questions à l'adresse http://developer.yahoo.net/forum.
localMap.removeAllMarkers();
Dans la leçon suivante, vous allez intégrer le nouveau gestionnaire dans l'application.