/**
   * Finds the cursor under the given point.
   *
   * @param aPoint the coordinate of the potential cursor, cannot be <code>null</code>.
   * @return the cursor index, or -1 if not found.
   */
  protected final Cursor findCursor(final Point aPoint) {
    final SignalDiagramModel model = getModel();

    final long refIdx = model.locationToTimestamp(aPoint);
    final double snapArea = CURSOR_SENSITIVITY_AREA / model.getZoomFactor();

    for (Cursor cursor : model.getDefinedCursors()) {
      if (cursor.inArea(refIdx, snapArea)) {
        return cursor;
      }
    }

    return null;
  }