@Override
  public boolean onContextItemSelected(MenuItem item) {
    AdapterView.AdapterContextMenuInfo menuInfo = null;
    try {
      menuInfo = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();
    } catch (ClassCastException e) {
      log("bad menuInfoIn e=" + e);
      return super.onContextItemSelected(item);
    }

    if (mDialpadItem == null) {
      mDialpadItem = mItemAdapter.getItem(mContextMenuIdx);
    }
    String name = mDialpadItem.getName();
    String number = mDialpadItem.getNumber();
    long contactId = mDialpadItem.getContactId();
    log("onContextItemSelected: name=" + name + " number=" + number + " contactId=" + contactId);
    switch (item.getItemId()) {
      case R.id.menu_new_contact:
        CommonMethod.newContact(this, number);
        break;

      case R.id.menu_add_to_contacts:
        CommonMethod.createContact(this, number);
        break;

      case R.id.menu_view_contact:
        CommonMethod.viewContact(this, contactId);
        break;

      case R.id.menu_send_message:
        CommonMethod.sendMessage(this, number, null);
        break;

      case R.id.menu_delete_log:
        CommonMethod.showConfirmDlg(
            this,
            R.string.clear_call_log_by_number_confirm,
            R.string.alert_dialog_title,
            new DelCallLogItemListener());
        break;

      case R.id.menu_log_detail:
        CommonMethod.viewPimDetail(this, name, number, contactId, DetailEntry.LOG_DETAIL);
        break;

      case R.id.menu_add_to_blacklist:
        CommonMethod.addToBlacklist(this, name, number);
        break;

      case R.id.menu_clear_from_blacklist:
        CommonMethod.clearFromBlacklist(this, name, number);
        break;

      default:
        break;
    }

    return super.onContextItemSelected(item);
  }