package edu.pdx.cs410J.gwt.client; import com.google.common.annotations.VisibleForTesting; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.user.client.Window; import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.user.client.ui.Button; import com.google.gwt.user.client.ui.HorizontalPanel; import com.google.gwt.user.client.ui.Label; import com.google.gwt.user.client.ui.TextBox; /** * Demonstrates GWT's remote services */ public class DivisionServiceExample extends Example { @VisibleForTesting TextBox dividend; @VisibleForTesting TextBox divisor; @VisibleForTesting TextBox quotient; @VisibleForTesting Button equals; public DivisionServiceExample() { super("Division Service"); final DivisionServiceAsync service = DivisionService.Helper.getAsync(); dividend = new TextBox(); dividend.setVisibleLength(3); divisor = new TextBox(); divisor.setVisibleLength(3); quotient = new TextBox(); quotient.setVisibleLength(3); quotient.setReadOnly(true); equals = new Button("="); equals.addClickHandler(new ClickHandler() { public void onClick( ClickEvent event) { try { int d1 = Integer.parseInt(dividend.getText()); int d2 = Integer.parseInt(divisor.getText()); service.divide(d1, d2, new AsyncCallback<Integer>() { public void onFailure(Throwable ex) { ex = ex.getCause() != null ? ex.getCause() : ex; Window.alert(ex.toString()); } public void onSuccess(Integer result) { quotient.setText(String.valueOf(result)); } }); } catch (NumberFormatException ex) { Window.alert("Not a number: " + ex.getMessage()); } } }); HorizontalPanel panel = new HorizontalPanel(); panel.setSpacing(2); panel.setVerticalAlignment(HorizontalPanel.ALIGN_MIDDLE); panel.add(dividend); panel.add(new Label("/")); panel.add(divisor); panel.add(equals); panel.add(quotient); add(panel); } }