private void handleClick() {
      setEnabled(false);
      CustomerServiceAsync instance = CustomerService.Util.getInstance();
      instance.deleteCustomer(
          customer,
          new AsyncCallback() {
            public void onFailure(Throwable caught) {
              Window.alert("Error occured:" + caught.toString());
              setEnabled(true);
            }

            public void onSuccess(Object result) {
              setText("Deleted!");
            }
          });
    }
  private void createCustomer() {
    createCustomerButton.setEnabled(false);
    CustomerServiceAsync instance = CustomerService.Util.getInstance();
    instance.createCustomer(
        firstNameTextBox.getText(),
        lastNameTextBox.getText(),
        new AsyncCallback() {
          public void onFailure(Throwable caught) {
            Window.alert("Error occured:" + caught.toString());
            createCustomerButton.setEnabled(true);
          }

          public void onSuccess(Object result) {
            statusLabel.setText("Success!");
            createCustomerButton.setEnabled(true);
            showCustomers();
          }
        });
  }
  private void showCustomers() {
    refreshButton.setEnabled(false);
    CustomerServiceAsync instance = CustomerService.Util.getInstance();
    instance.getCustomers(
        new AsyncCallback() {

          public void onFailure(Throwable error) {
            Window.alert("Error occured:" + error.toString());
            refreshButton.setEnabled(true);
          }

          public void onSuccess(Object value) {
            try {
              rebuildCustomersTable((List) value);
            } catch (Exception e) {
              Window.alert("Error occured:" + e.getMessage());
            }
            refreshButton.setEnabled(true);
          }
        });
  }