@Override
  public boolean onContextItemSelected(MenuItem item) {
    int pos = ((android.widget.AdapterView.AdapterContextMenuInfo) item.getMenuInfo()).position;
    int itemId = item.getItemId();
    if (itemId == R.id.showmod) {
      OsmandSettings settings = getMyApplication().getSettings();
      OsmPoint info = (OsmPoint) listAdapter.getItem(pos);
      settings.setMapLocationToShow(
          info.getLatitude(), info.getLongitude(), settings.getLastKnownMapZoom());
      MapActivity.launchMapActivityMoveToTop(LocalOpenstreetmapActivity.this);
      return true;
    } else if (itemId == R.id.deletemod) {
      OsmPoint info = (OsmPoint) listAdapter.getItem(pos);
      if (info.getGroup() == OsmPoint.Group.POI) {
        dbpoi.deletePOI((OpenstreetmapPoint) info);
      } else if (info.getGroup() == OsmPoint.Group.BUG) {
        dbbug.deleteAllBugModifications((OsmNotesPoint) info);
      }
      listAdapter.delete(info);
      return true;
    } else if (itemId == R.id.uploadmods) {
      toUpload = new OsmPoint[] {listAdapter.getItem(pos)};
      showDialog(DIALOG_PROGRESS_UPLOAD);
      return true;
    }

    return super.onContextItemSelected(item);
  }
 @Override
 public Node commitNodeImpl(OsmPoint.Action action, Node n, EntityInfo info, String comment) {
   Node newNode = n;
   if (n.getId() == -1) {
     newNode = new Node(n, --nextid); // generate local id for the created node
   }
   OpenstreetmapPoint p = new OpenstreetmapPoint();
   p.setEntity(newNode);
   p.setAction(action);
   p.setComment(comment);
   if (p.getAction() == OsmPoint.Action.DELETE && newNode.getId() < 0) { // if it is our local poi
     db.deletePOI(p);
   } else {
     db.addOpenstreetmap(p);
   }
   return newNode;
 }
 @Override
 protected void onDestroy() {
   super.onDestroy();
   if (dbpoi != null) {
     dbpoi.close();
   }
   if (dbbug != null) {
     dbbug.close();
   }
 }
  @Override
  protected void onResume() {
    super.onResume();

    dataPoints = new ArrayList<OsmPoint>();
    List<OpenstreetmapPoint> l1 = dbpoi.getOpenstreetmapPoints();
    List<OsmNotesPoint> l2 = dbbug.getOsmbugsPoints();
    dataPoints.addAll(l1);
    dataPoints.addAll(l2);
    listAdapter.clear();
    for (OpenstreetmapPoint p : l1) {
      listAdapter.add(p);
    }
    for (OsmNotesPoint p : l2) {
      listAdapter.add(p);
    }
    listAdapter.notifyDataSetChanged();
  }
 public OpenstreetmapLocalUtil(Context uiContext) {
   this.ctx = uiContext;
   this.db = new OpenstreetmapsDbHelper(ctx);
   this.nextid = Math.min(-2, db.getMinID());
 }