Listing 4. Source Code for the Main Program package com.kereki.client; import com.google.gwt.core.client.EntryPoint; import com.google.gwt.core.client.JavaScriptObject; import com.google.gwt.user.client.ui.*; import com.google.gwt.json.client.*; import com.google.gwt.http.client.URL; import com.kereki.client.JSONRequest; import com.kereki.client.JSONRequestHandler; public class example implements EntryPoint { public void onModuleLoad() { final TextBox tbSearchFor = new TextBox(); final TextArea taJsonResult = new TextArea(); taJsonResult.setCharacterWidth(80); taJsonResult.setVisibleLines(20); final HorizontalPanel hp1 = new HorizontalPanel(); Button bGetNews = new Button("Get news!", new ClickListener() { public void onClick(Widget sender) { JSONRequest.get( "http://search.yahooapis.com/"+ "NewsSearchService/V1/newsSearch?"+ "appid=YahooDemo&query="+ URL.encode(tbSearchFor.getText())+ "&results=2&language=en"+ "&output=json&callback=", new JSONRequestHandler() { public void onRequestComplete( JavaScriptObject json) { JSONObject jj= new JSONObject(json); taJsonResult.setText(jj.toString()); }; } ); } }); hp1.add(new Label("Search for:")); hp1.add(new HTML(" ",true)); hp1.add(tbSearchFor); hp1.add(new HTML(" ",true)); hp1.add(bGetNews); RootPanel.get().add(hp1); RootPanel.get().add(new HTML("
",true)); RootPanel.get().add(taJsonResult); } }