public void onButtonApplyClicked(View view) {
    if (printOrder.getPromoCode() != null) {
      // Clear promo code
      printOrder.clearPromoCode();
      updateViewsBasedOnPromoCodeChange();
    } else {
      // Apply promo code
      final ProgressDialog dialog = new ProgressDialog(this);
      dialog.setCancelable(false);
      dialog.setTitle("Processing");
      dialog.setMessage("Checking Code...");
      dialog.show();

      String promoCode = ((EditText) findViewById(R.id.edit_text_promo_code)).getText().toString();
      printOrder.applyPromoCode(
          promoCode,
          new ApplyPromoCodeListener() {
            @Override
            public void onPromoCodeApplied(PrintOrder order, BigDecimal discount) {
              dialog.dismiss();
              Toast.makeText(PaymentActivity.this, "Discount applied!", Toast.LENGTH_LONG).show();
              updateViewsBasedOnPromoCodeChange();
            }

            @Override
            public void onError(PrintOrder order, Exception ex) {
              dialog.dismiss();
              showErrorDialog(ex.getMessage());
            }
          });
    }
  }