/*
* SmartGWT (GWT for SmartClient)
* Copyright 2008 and beyond, Isomorphic Software, Inc.
*
* SmartGWT is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License version 3
* as published by the Free Software Foundation. SmartGWT is also
* available under typical commercial license terms - see
* http://smartclient.com/license
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*/
package com.smartgwt.sample.showcase.client;
import java.util.LinkedHashMap;
import java.util.Map;
import com.smartgwt.client.widgets.form.fields.events.ClickEvent;
import com.smartgwt.client.widgets.form.fields.events.ClickHandler;
import com.smartgwt.client.widgets.form.fields.events.KeyPressEvent;
import com.smartgwt.client.widgets.form.fields.events.KeyPressHandler;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.core.client.JavaScriptObject;
import com.google.gwt.user.client.ui.RootPanel;
import com.smartgwt.client.data.WSDLLoadCallback;
import com.smartgwt.client.data.WebService;
import com.smartgwt.client.data.WebServiceCallback;
import com.smartgwt.client.data.XMLTools;
import com.smartgwt.client.rpc.RPCResponse;
import com.smartgwt.client.util.SC;
import com.smartgwt.client.widgets.Canvas;
import com.smartgwt.client.widgets.form.DynamicForm;
import com.smartgwt.client.widgets.form.fields.ButtonItem;
import com.smartgwt.client.widgets.form.fields.StaticTextItem;
import com.smartgwt.client.widgets.form.fields.TextItem;
public class Showcase implements EntryPoint {
public void onModuleLoad() {
RootPanel.get().add(getViewPanel());
}
public Canvas getViewPanel() {
final ZipForm form = new ZipForm();
form.setLeft(50);
form.setTop(50);
form.setNumCols(3);
form.setCellSpacing(5);
TextItem zipField = new TextItem();
zipField.setName("ZipCode");
zipField.addKeyPressHandler(new KeyPressHandler() {
public void onKeyPress(KeyPressEvent event) {
if (event.getKeyName().equals("Enter")) {
form.callService();
}
}
});
ButtonItem findButton = new ButtonItem("findCity", "Find City");
findButton.setStartRow(false);
findButton.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
form.callService();
}
});
StaticTextItem cityText = new StaticTextItem();
cityText.setName("City");
form.setItems(zipField, findButton, cityText);
XMLTools.loadWSDL("http://www.webservicex.net/uszip.asmx?WSDL", new WSDLLoadCallback() {
public void execute(WebService webService) {
zipCodeService = webService;
}
});
return form;
}
class ZipForm extends DynamicForm {
public void callService() {
if (zipCodeService == null) {
SC.say("Please try again in a moment - still loading web service descriptor");
} else {
setValue("City", "Loading...");
Map data = new LinkedHashMap();
data.put("USZip", getValueAsString("ZipCode"));
zipCodeService.callOperation("GetInfoByZIP", data, "//CITY", new WebServiceCallback() {
public void execute(Object[] data, JavaScriptObject xmlDoc, RPCResponse rpcResponse,
JavaScriptObject wsRequest) {
ZipForm.this.setValue("City", (String) data[0]);
}
});
}
}
}
private WebService zipCodeService;
}
|