/**
   * This is an overrided call of text change. This method gets called on every text change in the
   * search box.
   *
   * @param textArea
   * @param previousText
   * @param currentText
   */
  public void onTextChange(
      PatchedTextArea textArea, String previousText, final String currentText) {
    if (!(Display.getInstance().getCurrent() instanceof FormInvitation)) {
      return;
    }
    Log.v(TAG, " ************* testing PatchedTextArea " + currentText);
    Log.v(TAG, " ************* String Length  " + currentText.length());
    final int index = currentText.lastIndexOf(';');

    Log.v(TAG, " ************* Last Index " + index);
    if (index > 0) {
      UIHelper.runOnLwuitUiThread(
          new Runnable() {
            public void run() {
              searchContactlist(currentText.substring(index + 1));
            }
          });

      Log.v(TAG, " ************* Last Character " + currentText.substring(index));
    } else {
      UIHelper.runOnLwuitUiThread(
          new Runnable() {
            public void run() {
              searchContactlist(currentText);
            }
          });
    }

    if (!inviteVector.isEmpty()) {
      inviteList.setSelectedIndex(0);
      inviteList.repaint();
    }
  }
  /**
   * This method opens native LCDUI dialog on the screen for confirmation, when user clicks on
   * delete or unlink account from the list.
   *
   * @param message
   * @param textPositive
   * @param textNegative
   */
  private void showDialog(final String message, String textPositive, String textNegative) {

    Alert alertDialog =
        UIHelper.getAlertDialog(
            LBL_CONFIRM, message, textPositive, textNegative, AlertType.CONFIRMATION);
    alertDialog.setCommandListener(
        new CommandListener() {
          public void commandAction(javax.microedition.lcdui.Command c, Displayable d) {
            if (c.getLabel().equals(LBL_UNLINK)) {
              BaseRetryable addressUpdateRetryable =
                  new BaseRetryable() {
                    public void retry() {
                      new Thread() {
                        public void run() {

                          Log.v(TAG, "retrying...");
                          DisplayStackManager.showProgressForm(true, MSG_UNLINK_PROGRESS);
                          try {
                            MqttConnectionHandler.getMqttConnectionHandler().close();
                            if (ClientConnectionHandler.UnlinkAccount()) {
                              ModelUtils.deleteUser(null);
                              DisplayStackManager.showForm(AppState.getForm());
                            } else {
                              DisplayStackManager.showForm(DisplayStackManager.FORM_ERROR);
                            }
                          } catch (Exception ex) {

                            Log.v(TAG, "exception in unlink account:" + ex.getClass().getName());
                            if (ex instanceof IOException
                                || ex instanceof ConnectionFailedException) {
                              errorForm.setErrorMessage(NO_NETWORK_TITLE);
                            }
                            errorForm.show();
                          }
                        }
                      }.start();
                    }
                  };
              addressUpdateRetryable.retry();
            } else if (c.getLabel().equals(LBL_DELETE)) {
              BaseRetryable addressUpdateRetryable =
                  new BaseRetryable() {
                    public void retry() {
                      new Thread() {
                        public void run() {

                          Log.v(TAG, "retrying...");
                          DisplayStackManager.showProgressForm(true, MSG_DELETE_PROGRESS);
                          try {
                            MqttConnectionHandler.getMqttConnectionHandler().close();
                            if (ClientConnectionHandler.DeleteAccount()) {
                              ModelUtils.deleteUser(null);
                              DisplayStackManager.showForm(AppState.getForm());
                            } else {
                              DisplayStackManager.showForm(DisplayStackManager.FORM_ERROR);
                            }
                          } catch (Exception ex) {

                            Log.v(TAG, "exception in delete account:" + ex.getClass().getName());
                            if (ex instanceof IOException
                                || ex instanceof ConnectionFailedException) {
                              errorForm.setErrorMessage(NO_NETWORK_TITLE);
                            }
                            errorForm.show();
                          }
                        }
                      }.start();
                    }
                  };
              addressUpdateRetryable.retry();
            }
            if (c.getLabel().equals(LBL_CANCEL)) {

              DisplayStackManager.showForm(AppState.getForm());
            }
          }
        });

    javax.microedition.lcdui.Display.getDisplay(Hike.sMidlet)
        .setCurrent(
            alertDialog, javax.microedition.lcdui.Display.getDisplay(Hike.sMidlet).getCurrent());
  }