@Override
  public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
    getActivity().getMenuInflater().inflate(R.menu.menu_treeview, menu);

    AdapterView.AdapterContextMenuInfo adapterInfo = (AdapterView.AdapterContextMenuInfo) menuInfo;
    long id = adapterInfo.id;
    TreeNodeInfo<Long> nodeInfo = mTreeStateManager.getNodeInfo(id);

    if (nodeInfo.isWithChildren()) {
      if (nodeInfo.isExpanded()) {
        menu.findItem(R.id.context_menu_expand_item).setVisible(false);
        menu.findItem(R.id.context_menu_expand_all).setVisible(false);
      } else {
        menu.findItem(R.id.context_menu_collapse).setVisible(false);
      }
    } else {
      menu.findItem(R.id.context_menu_expand_item).setVisible(false);
      menu.findItem(R.id.context_menu_expand_all).setVisible(false);
      menu.findItem(R.id.context_menu_collapse).setVisible(false);
    }

    // hide delete because deleting is dangerous
    menu.findItem(R.id.context_menu_delete).setVisible(false);

    super.onCreateContextMenu(menu, v, menuInfo);
  }